- 客户端会话技术:cookie
- 服务端会话技术:session
- 自定义会话技术:token
一.cookie
cookie本身由服务器端生成,通过Response将cookie写到浏览器上,下一次再次访问时,浏览器会根据不同的规则自动携带cookie过来
#服务端设置cookie:
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
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