1. 程式人生 > >Django中Cookie 和 Session

Django中Cookie 和 Session

登錄 been close rip response 獲取cookie default rect dex

Django中操作Cookie

Cookie 就是保存在瀏覽器端的鍵值對   

  1. 服務端可以在瀏覽器上設置COOKIE 保存在瀏覽器上的
  2. 每次請求會攜帶COOKIE
  3. Cookie是有效時間的
  4. 可以用來做登錄或其他事情

獲取Cookie

request.COOKIES[‘key‘]
request.get_signed_cookie(key, default=RAISE_ERROR, salt=‘‘, max_age=None)

參數:

  • default: 默認值
  • salt: 加密鹽
  • max_age: 後臺控制過期時間

設置Cookie

rep = HttpResponse(...)
rep = render(request, ...)

rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt=‘加密鹽‘,...)

參數:

  • key, 鍵
  • value=‘‘, 值
  • max_age=None, 超時時間
  • expires=None, 超時時間(IE requires expires, so set it if hasn‘t been already.)
  • path=‘/‘, Cookie生效的路徑,/ 表示根路徑,特殊的:根路徑的cookie可以被任何url的頁面訪問
  • domain=None, Cookie生效的域名
  • secure=False, https傳輸
  • httponly=False 只能http協議傳輸,無法被JavaScript獲取(不是絕對,底層抓包可以獲取到也可以被覆蓋)

刪除Cookie

def logout(request):
    rep = redirect("/login/")
    rep.delete_cookie("user")  # 刪除用戶瀏覽器上之前設置的usercookie值
    return rep

Cookie版登陸校驗

技術分享圖片
# 登錄
def login(request):
    
if request.method=="POST": name=request.POST.get("name") pwd=request.POST.get("pwd") if name=="cao" and pwd=="123": rep=redirect("/index1/") # rep.set_cookie("name",name) # 加鹽 # rep.set_signed_cookie("name",name ,salt="nidaye # 設置時間,時間一到自動跳轉到登錄頁面 # rep.set_signed_cookie("name",name,salt="nidaye",max_age=10) #path=‘/‘, Cookie生效的路徑,/ 表示根路徑,特殊的:根路徑的cookie可以被任何url的頁面訪問 rep.set_signed_cookie("name1", name, salt="nidaye", max_age=100,path="/index1/") return rep return render(request,"login.html") def index1(request): # name=request.COOKIES.get("name") # 加鹽的 # name=request.get_signed_cookie("name",None,salt="nidaye") # 時間一到,name取不到值則跳轉到登錄頁面 name = request.get_signed_cookie("name1", None, salt="nidaye") # 如果取不到name則自動跳轉到登錄頁面 if not name: return redirect("/login/") return render(request,"index1.html",{"name":name}) def index2(request): name = request.get_signed_cookie("name1", None, salt="nidaye") if not name: return redirect("/login/") return render(request,"index2.html",{"name":name})
登錄校驗

hhhhhh

Django中Cookie 和 Session