cookie session 讲解

时间:2023-03-09 20:16:34
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:获取')