Session管理


request.session.set_expiry(10) #設置10s后session失效
request.session.get_expire_at_browser_close() #查看session是否在瀏覽器關閉后失效

django的session默認都保存在django_session表里

在pathon中查看session:
from django.contrib.sessions.models import Session
Session.objects.all()
s=Session.objects.get(pk='y6n24k3l19a94h2vy999o2i4zsb7vcaa')
s.get_decoded() #查看該session的username
s.expire_date #查看該session的過期時間


set_expiry():
* 如果value是個整數,session會在些秒數后失效。
* 如果value是個datatime或timedelta,session就會在這個時間后失效。
* 如果value是0,用戶關閉瀏覽器session就會失效。
* 如果value是None,session會依賴全局session失效策略。

get_expiry_date() #查看session失效時間
get_expiry_age() #查看session失效時長
get_expire_at_browser_close() #查看session是否在瀏覽器關閉后失效


django session默認2周后失效,關閉瀏覽器也不失效。
使用set_expiry()方法設置session失效時間,這樣設置后,關閉瀏覽器session還不會失效,只有當時間到了才會失效。


修改settings.py設置瀏覽器關閉后失效:
1.在settings.py最后一行添加 SESSION_EXPIRE_AT_BROWSER_CLOSE=True
2.清空已保存的session:delete from django_session
3.清空IE緩存
4.重新測試OK,使用print request.session.get_expire_at_browser_close()查看session是否在瀏覽器關閉后失效

django保存在數據庫中的session,如果用戶主動退出,session會自動清除,如果沒有退出就一直保留,記錄數越來越大,要定時清理沒用的session。

任務計划定時運行命令

python manage.py clearsessions(未測試)

django-admin.py cleanup

 

只使用session的方式,無需再使用cookie方式。session其實是依賴於Cookie的,如果瀏覽器不支持Cookie的話,Django的Session也就無從用起了,因為Session的生成是根據Cookie里面記錄的SESSION_COOKIE_NAME來生成的.

request.session.test_cookie_worked() #測試客戶端是否支持cookie

Django中的Session和Cookie管理:

http://www.cnblogs.com/BeginMan/p/3890761.html

http://blog.csdn.net/aixiaohei/article/details/6947150

http://simple-is-better.com/news/499


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM