cookie session 讲解
cookie:
cookie的定义:
cookie 是由web服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息,并且在每次请求时会携带保存的数据去访问服务器,所以cookie有效地提升了用户体验,cookie 不适合存取敏感的信息,因很容易会暴露信息。cookie最典型的应用是判定注册用户是否已经登录网站。
设置cookie
设置cookie会用到响应对象也就是HttpResponse,也就是响应请求时进行设置cookie
获取cookie
获取cookie会用到请求对象也就是request,也就是在请求对象进行获取cookie
具体操作:
def cookie_set(request):
#先获取响应对象
res = HttpResponse('设置cookie')
#使用响应对象设置cookie
res.set_cookie('name','lisi')
res.set_cookie('name1','yichuan',3600*24*365)
# res.set_cookie('aa','aabbcc',expires=datetime(2025, 4, 19, 12, 20), path='/')
return res
def cookie_get(request):
#在请求对象中获取
data = request.COOKIES.get('name')
print(data)
return HttpResponse('获取cookie')
session:
session是一个概念,一套方案,用于解决用户名和密码存储区你cookie中不安全的问题。
Session的工作机制:浏览器传用户名和密码之后,session会将username加密生成一个,session_id,然后再返回到浏览器中。黑客不知道加密方式,所以授权信息更加安全。
session生命周期:
创建:第一次执行request.getSession()时创建
销毁:
1)服务器(非正常)关闭时
2)session过期/失效(默认30分钟)
问题:时间的起算点 从何时开始计算30分钟?
从不操作服务器端的资源开始计时
具体操作:
提前说出需要注意的地方:
1、settings.py中 SECRET_KEY、INSTALLED_APPS里面的django.contrib.session 、MIDDLEWARE里面的 django.contrib.sessions.middleware.SessionMiddleware 这几个地方不要动
2、Django的session需要依赖数据库,所以数据库中必须要有django_session这张表,里面的session_key列就是为session生成的sessionid,session_data 就是存的session数据,expire_date存的是时间
具体操作:
def session_set(request):
#设置session
request.session['VipUser'] = {'name':'lisi','age':12}
return HttpResponse('session_set:设置')
def session_get(request):
#获取session
data = request.session.get('VipUser')
print(data)
return HttpResponse('session_get:获取')