日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

设置cookie存活时间_Django之cookie、session、token

發布時間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设置cookie存活时间_Django之cookie、session、token 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 客戶端會話技術:cookie
  • 服務端會話技術:session
  • 自定義會話技術:token

一.cookie

cookie本身由服務器端生成,通過Response將cookie寫到瀏覽器上,下一次再次訪問時,瀏覽器會根據不同的規則自動攜帶cookie過來

#服務端設置cookie: response.set_cookie(key,value[,max_age=None,exprise=None)] def set_cookie(request):response = HttpResponse("設置Cookie") #這里response =redirct()或者response =render()也是可以的response.set_cookie('username', 'Rock')return response """ HTTP響應報文里面會有:set_cookie:username=Rock""" #服務端獲取cookie: request.GET.get(key,defaultvalue) def get_cookie(request):username = request.COOKIES.get("username")return HttpResponse(username)#要求瀏覽器刪除cookie def logout(request):response = redirect(reverse("app:login"))response.delete_cookie("content")return response

response.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)

key: cookie的name

value:cookie的值

max_age:cookie存活時間,單位是秒

expires:具體過期時間

path:cookie的訪問路徑,只有在某個路徑下訪問才帶上該cookie

domain:域名,只有在某個域名下訪問

secure:安全

httpoly:如果為True那么js就不能獲取cookie

set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)設置加密的cookie,salt是秘鑰,對value進行了加密處理

response.set_signed_cookie('content', uname, "Rock")

uname = request.get_signed_cookie("content", salt="Rock")

二. session

#session表里面有字段session_key、session_data、expire_date#服務器設置session def login(request):if request.method == "GET":return render(request, 'two_login.html')elif request.method == "POST":username = request.POST.get("username")request.session["username"] = usernamereturn HttpResponse("登錄成功")""" HTTP響應報文里面會有:set_cookie:sessionid= 一串hash編碼(這個是服務器幫你生成的)session表里面的字段session_key: 一串hash編碼 session_data : 混淆串 {"username": "jam"}"""#服務器獲取session def mine(request):username = request.session.get("username")return render(request, 'two_mine.html', context=locals())#要求瀏覽器刪除sessionid response.delete_cookie('sessionid')#刪除session表里面的session_data del request.session['username']#session 和cookie 一起刪 def logout(request):response = redirect(reverse('two:mine'))# del request.session['username']# response.delete_cookie('sessionid')# session cookie一起干掉request.session.flush()return response

django中啟用SESSION

settings中

INSTALLED_APPS:'django.contrib.sessions'

MIDDLEWARE:'django.contrib.sessions.middleware.SessionMiddleware'

每個HttpRequest對象都有一個session屬性,也是一個類字典對象

常用操作:

get(key,default=None) 根據鍵獲取會話的值

clear() 清楚所有會話

flush() 刪除當前的會話數據并刪除會話的cookie

delete request['session_id'] 刪除會話

session.session_key獲取session的key

設置數據 :

request.session[‘user’] = username

數據存儲到數據庫中會進行編碼使用的是Base64

三. token

token一般只要是唯一就行,生成方法有很多種

class Student(models.Model):s_name = models.CharField(max_length=16, unique=True)s_password = models.CharField(max_length=128)s_token = models.CharField(max_length=256)#以ip+時間戳+用戶名來生成 def generate_token(ip, username):c_time = time.ctime()r = usernamereturn hashlib.new("md5", (ip + c_time + r).encode("utf-8")).hexdigest()

總結

以上是生活随笔為你收集整理的设置cookie存活时间_Django之cookie、session、token的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。