在客戶端與服務端的一次會務中,屢次的請求與相應,HTTP協議是無狀態協議,也就是說每一個請求都是獨立的!沒法記錄前一次請求的狀態。會話跟蹤技術即可以實現屢次回話間信息共享的做用,HTTP協議中可使用Cookie來完成會話跟蹤!在Web開發中,使用session來完成會話跟蹤,session底層依賴Cookie技術。 python
Cookie是瀏覽器的技術,當瀏覽器第一次訪問一個網站時,發送給服務端的是一個空的cookie,若是登陸成功了,服務器能夠向cookie的字典中插入值,之後在必定的時間內,瀏覽器訪問此服務端,都會帶着這個cookie字典.數據庫
Cookie語法:django
1 Obj=Httpresponse(「ok」) 2 Obj.set_cookie(「is_login」,True) 3 Obj.set_cookie(「username」,」amy」) #不寫時間默認是兩週 4 Obj.set_cookie(「username」,」amy」,max_age=20) #讓瀏覽器20秒後清除cookie獲取cookie
1 Request.COOKIES 2 獲得的是cookie字典{「is_login」:True,「username」:」amy」} 3 Request.COOKIES.get(「is_login」) 4 獲得的是True
1 Response.delete_cookie("cookie_key",path="/",domain=name)
因爲cookie的信息暴露在客戶端,很是的不安全,並且數據量一但變大,會必定程度的影響速度,因此,出現了session,session是基於cookie的,session是服務端技術瀏覽器
Request.session[「s_username」]=」amy」安全
這句話會作三件事:服務器
生成一個隨機字符串做爲表中session-key字段的值cookie
向表中django_session插入數據session
Session-key session-datadom
隨機字符串 加密後的{「s_username」:」amy」}函數
向客戶端相應時,加上sessionid=剛剛生成的隨機字符創
1 S_username=request.session[「s_username」]
1 Del request.session[「s_username」]
(1) 找到鑰匙
(2) 從Django session表中過濾出該記錄,並刪除
(3) 刪除鑰匙
視圖函數中要使用用戶認證組件須要引入auth模塊
From Django.contribute import auth
前提:必須使用組Django提供auth_user表
插入命令:在manage.py中建立命令createsuperuser(python manage.py createsuperuser)即爲向該表中插入記錄,經過此方式插入的密碼是加密的,直接在表中插入密碼不是加密的
查詢成功返回用戶對象,查詢失敗返回none:
auth.authenticate(username=」amy」,password=123)
auth.login(request,user_obj)
至關於:request.session["user_id"]=user.pk
保存後可使用request.user,代指當前登陸對象,沒有auth.login時,默認是匿名對 象,requester.user是全局變量
auth.logout(request)
from Django.contrib.auth.models import User
User.objects.create_user(username=user,password=pwd)
user=User.objects.get(username=request.user.username) user.set_password("666") user.save()