How do I get the session cookie from the login and then how do I pass it in the subsequent request?
On Monday, August 1, 2016, ludovic coues <[email protected]> wrote: > The session cookie ? > > Or you could use another decorator or a middle-ware doing > authentication based on the ip and some information passed as get > argument. Like a token returned by django when you auth the user. > > The request hit the new decorator, the decorator notice the user isn't > logged in and that it provide a token. It check if the token match a > recently logged in user and its ip and maybe the user-agent. If that's > the case, log the user in and let the request hit the @login_required > decorator. > > If you don't simply reuse the session cookie, I would spend some time, > listening with wireshark and messing with a browser, checking that I > am not opening a hole. > > 2016-08-01 21:39 GMT+02:00 Larry Martell <[email protected] > <javascript:;>>: > > On Mon, Aug 1, 2016 at 3:03 PM, James Schneider <[email protected] > <javascript:;>> > > wrote: > >> > >> > >> On Mon, Aug 1, 2016 at 11:33 AM, Michal Petrucha > >> <[email protected] <javascript:;>> wrote: > >>> > >>> On Mon, Aug 01, 2016 at 12:17:38PM -0400, Larry Martell wrote: > >>> > I have a view that is accessed both from the browser and from a > >>> > non-browser app. The request from the non browser app come from a > >>> > remote app where the user has already had to login (or they would > >>> > never get to the point where they could cause the request to be > sent). > >>> > Is there a way to make login required when the request comes from a > >>> > browser but then not have login required when the request comes from > >>> > the app? > >>> > >>> That sounds like a bad idea. Even with the “app”, when a request is > >> > >> > >> +100 > >> > >> > >>> being made, the user has to be authenticated somehow. If you allow > >>> your “app” to access the view without authentication (regardless of > >>> what criterion you pick to determine it is the “app”, be it the > >>> user-agent, referrer, or whatnot), what's to prevent a motivated > >>> attacker from finding the criterion out using a sniffing proxy or some > >>> other tool, and just making the request directly? > >>> > >> > >> +100 > >> > >> Your end-users (regular browser sessions) and apps using API calls > should > >> probably be using a separate URL structure. In most cases the API calls > >> have > >> a unique identifier in the path such as being prepended with '/api/' and > >> are > >> often followed by a version number ('/api/v1/') to maintain > compatibility > >> with concurrent API versions. > >> > >> While it is a terrible idea to have an authenticated and > non-authenticated > >> URL for the same resource (or set of resources), you can easily achieve > >> this > >> by having separate URL's for your browser sessions vs. API calls, and > >> performing the login decoration on the browser URL in the urls.py file > >> rather than decorating the view directly. The URL for the API call would > >> not > >> be decorated and can be accessed without requiring a login, but both > URL's > >> would point at the same view. > >> > >> My advice is not to do that, though. > >> > >> You should heavily consider either having your app be authenticated > (login > >> and grab a session token via your API), or provide an API token to the > >> local > >> app that is associated with the user you want. The latter will require > >> some > >> extra infrastructure. > >> > >> The alternative is to not have the user log in no matter how they are > >> accessing the URL. If it works without logging in, and there are no > >> resources to protect, that sounds like the way to go. With the > >> implementation you've indicated, you'll be asking for trouble > >> operationally > >> later when your view is expecting a user object, but it doesn't get one. > >> Means more complexity for no appreciable gain. > >> > >> You can also implement some sort of SSO implementation (Shibboleth, CAS, > >> OAuth, etc.) that can be used by both regular browser sessions and your > >> custom application. > > > > I understand and know all that. The situation is that they have an > existing > > django app. Nothing in the app can be accessed without logging in. Then > they > > have an in house developed non browser client app and they want to access > > some of the functionality from the django app in the other app. When the > > other app comes up they do have to logi in and I do use the django auth > > system for that. But when a request comes in from the app there is > nothing > > to tie it back to the previously authorized session. Is there something > from > > the initial auth I can use to get past the @login_required decorator on > the > > views? > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Django users" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected] <javascript:;>. > > To post to this group, send email to [email protected] > <javascript:;>. > > Visit this group at https://groups.google.com/group/django-users. > > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/django-users/CACwCsY4rN4i_bruDHnt24BNJNGFLCCBRH-N2uvn4ap%3DOUCqx2A%40mail.gmail.com > . > > > > For more options, visit https://groups.google.com/d/optout. > > > > -- > > Cordialement, Coues Ludovic > +336 148 743 42 > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:;>. > To post to this group, send email to [email protected] > <javascript:;>. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAEuG%2BTbEtZ17sYPWM2683aLC5%3DVV%2BVxCGvCbTr-F0gFV-32N-g%40mail.gmail.com > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CACwCsY6%3Dk%3D7Kaw5pfys68ez_iv4ZJQvh_7PhJWPiC%3DQos4DFkA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

