设置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 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存活時間,單位是秒
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 responsedjango中啟用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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php对接海康视频教程_EasyNVR无
- 下一篇: 10kv电压互感器型号_10kv电流互感