cookie and session
cookie
定义: 保存在浏览器上的一组组键值对
特性:
服务器让浏览器保存的cookie
浏览器有权利进行不设置
下次访问时自动携带响应的cookie
Django中的操作
设置:
ret.set_cookie('is_login', '1') # 设置cookie 超时时间 max_age=5 路径 path='/home/'
ret.set_signed_cookie('is_login', '盐', 'day66') # 设置加密cookie
获取:
request.COOKIES.get('is_login') # 不加密的cookie
request.get_signed_cookie('is_login',salt='盐',default='xx') # 加密cookie
删除
ret.delete_cookie('is_login') # Set-Cookie: is_login=""; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
session
定义: 保存在服务器端的一组组键值对
为什么使用session:
cookie的长度和个数受到限制
cookie保存在浏览器本地不安全
Django的操作
设置:
request.session['is_login'] = '1' # 设置session数据
request.session.set_expiry(5) # 设置超时时间
获取:
request.session.get('is_login') # 获取session
删除:
del request.session[key] # 删除单个session
request.session.delete() # 删除服务器的session数据,不删除cookie
request.session.flush() # 删除session和cookie
其他方法
request.session.set_expiry(value) # 设置超时时间
request.session.clear_expired() # 清除所有超时的 session
配置:
# Cookie name. This can be whatever you want.
SESSION_COOKIE_NAME = 'sessionid'
# Age of cookie, in seconds (default: 2 weeks).
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2
SESSION_SAVE_EVERY_REQUEST = False
# Whether a user's session cookie expires when the Web browser is closed.
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
# 將session 存储在数据库中 默认配置
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
# 將session 存储在缓存中
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
# session 存储 缓存 + 数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
# 將session 存储在文件中
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
# 文件路径
SESSION_COOKIE_AGE = None