设置cookie存活时间_Django之cookie、session、token
- 客戶端會(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 responseresponse.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是秘鑰,對(duì)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 responsedjango中啟用SESSION
settings中
INSTALLED_APPS:'django.contrib.sessions'
MIDDLEWARE:'django.contrib.sessions.middleware.SessionMiddleware'
每個(gè)HttpRequest對(duì)象都有一個(gè)session屬性,也是一個(gè)類字典對(duì)象
常用操作:
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的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php对接海康视频教程_EasyNVR无
- 下一篇: 10kv电压互感器型号_10kv电流互感