2 回答

TA貢獻1806條經驗 獲得超8個贊
如果你要用is_authenticated()來判斷用戶是否登錄,那么登錄你也得用django.contrib.auth來處理登錄、登出和權限驗證,你可以再看看admin那一章
我自己寫的話,我一般在session中加標示,后面的請求每次過來都驗證一下session,即可判斷登錄狀態,session也比較好控制過期時長。
def VerifyLogin(request):
try:
if request.session['userid']:
return True
except:
return False
def gotologin(request):
string = '登錄信息已過期,請重新登錄'
return render_to_response('gotologin.html',{'string':string})
下面處理請求的方法中,調一下VerifyLogin函數就可以驗證狀態
if request.session['userid']:
....
esle:
....

TA貢獻1865條經驗 獲得超7個贊
如果你使用is_authenticated()判斷用戶是否登錄,那么意味著你采用了django的auth系統,
那么你的登陸最好使用django.contrib.auth中的login方法,
該方法會為將user_id以及user_backend放入session中存儲,
.is_authenticated()通過判斷session中是否有user_id 以及user_backend 來判斷用戶是否登陸。
如果,采用自己的登陸方法,那么有可能沒將user_id 或者user_backend 放入session中保存。
所以你的user被django認為沒有登錄,雖然你已經登陸了。
最好的辦法是利用django自己的登陸方法,結合該方法,判斷用戶是否登陸,從而決定用戶的行為。
- 2 回答
- 0 關注
- 577 瀏覽
添加回答
舉報