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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

一.cookie

cookie本身由服務(wù)器端生成,通過Response將cookie寫到瀏覽器上,下一次再次訪問時(shí),瀏覽器會(huì)根據(jù)不同的規(guī)則自動(dòng)攜帶cookie過來

#服務(wù)端設(shè)置cookie: response.set_cookie(key,value[,max_age=None,exprise=None)] def set_cookie(request):response = HttpResponse("設(shè)置Cookie") #這里response =redirct()或者response =render()也是可以的response.set_cookie('username', 'Rock')return response """ HTTP響應(yīng)報(bào)文里面會(huì)有:set_cookie:username=Rock""" #服務(wù)端獲取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存活時(shí)間,單位是秒

expires:具體過期時(shí)間

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

domain:域名,只有在某個(gè)域名下訪問

secure:安全

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

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

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

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

二. session

#session表里面有字段session_key、session_data、expire_date#服務(wù)器設(shè)置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響應(yīng)報(bào)文里面會(huì)有:set_cookie:sessionid= 一串hash編碼(這個(gè)是服務(wù)器幫你生成的)session表里面的字段session_key: 一串hash編碼 session_data : 混淆串 {"username": "jam"}"""#服務(wù)器獲取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'

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

常用操作:

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

clear() 清楚所有會(huì)話

flush() 刪除當(dāng)前的會(huì)話數(shù)據(jù)并刪除會(huì)話的cookie

delete request['session_id'] 刪除會(huì)話

session.session_key獲取session的key

設(shè)置數(shù)據(jù) :

request.session[‘user’] = username

數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中會(huì)進(jìn)行編碼使用的是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+時(shí)間戳+用戶名來生成 def generate_token(ip, username):c_time = time.ctime()r = usernamereturn hashlib.new("md5", (ip + c_time + r).encode("utf-8")).hexdigest()

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。