1. 程式人生 > >django自定義使用者認證後進不了帶有@login_required的頁面

django自定義使用者認證後進不了帶有@login_required的頁面

介紹下我的配置

setting中:

AUTHENTICATION_BACKENDS = (xx.yy.zz) #這是自定義backend的路徑,其中zz是類名

view中:

auth.login(request, user, backend='zzz')

按理說login之後就可以進入帶有裝飾符@login_required的頁面了,但是我始終進不了,看了半天原始碼也沒發現問題。。後來記起來我用django自己的認證後端是沒有問題的,於是先把auth.authenticate換成原來的,發現用我自定義的驗證使用者的方式沒有問題,現在唯一不同的就是auth.login部分,換成原來不帶引數的auth.login(request, user),然後就成功了。。原來是login原始碼中request.session[BACKEND_SESSION_KEY] = backend導致的問題,這樣驗證session時會出現問題,於是我又把引數backend換成xx.yy.zz也沒出現問題了。 所以最終的解決方案是:auth.login(request, user)或者auth.login(request, user,xx.yy.zz)
,不帶引數的話它自己會去找。