I am facing similar issue. How did you check the value of user.backend ?? Thanks, Shilpa
On Saturday, 14 June 2014 00:26:59 UTC+8, Scott Simmerman wrote: > > I faced a similar issue (request.user becoming anonymous after login) and > found > the following solution. It had to do with the naming convention for the > auth backend under AUTHENTICATION_BACKENDS in settings.py. I had a custom > auth backend class called PamBackend which I had in a file called > PamBackend.py. > I listed it under AUTHENTICATION_BACKENDS as 'auth_backends.PamBackend'. > This > seemed to work ok--authentication was happening as expected, returning a > valid > user--but the request.user would disappear after a page redirect. > > The key is that the backend name is set in the session when authenticate() > is > called (in django.contrib.auth). It sets the name like this: > > user.backend = "%s.%s" % (backend.__module__, > backend.__class__.__name__) > > So in my case, the name was set to 'auth_backends.PamBackend.PamBackend'. > > For a new http request, django checks the session and gets: > 1) the name of the auth backend, and > 2) the user id. > It then calls get_user (in django/contrib/auth/__init__.py) which does the > following: > 1) gets the backend name from the session, > 2) checks for a match in settings, and > 3) calls the appropriate get_user method from the appropriate backend. > > So at this point, my backend name did not match what was in settings.py and > it returned an anonymous user. > > -Scott > > On Monday, October 14, 2013 8:52:57 AM UTC-4, HM wrote: >> >> I can't get logging in with alternate auth backends to work with Django >> 1.4 or newer. >> >> Basically: >> >> 1. authenticate() works. request.user.is_authenticated() is True >> 2. Django's own login() seems to work, as request.user is set, >> request.session is set etc. >> 3. After the HttpResponseRedirect, request.user is AnonymousUser >> >> This has happened twice now, with different alternate auth backends. I >> can't get rid of Django 1.3 before this is fixed... >> >> In one project I can call the next view directly (with render) and it >> Just Works. In the current project, the next view contains a form, and the >> "login" doesn't survive the POST. >> >> What am I missing? See also the non-solution in >> http://stackoverflow.com/questions/16119155/django-request-user-not-set-after-redirect >> >> >> HM >> > -- 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/d05a4aa8-60dd-484c-88d3-90bc1dfba2c7%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

