session和cookie的区别以及在django中的应用

1、session

session 存在于服务器,默认存放session于数据库,session依赖于cookie,需要浏览器的cookie值去session里做对比,session就是用来在服务器端保存用户的会话状态。

django中,可以使用request.session来保存用户的登录状态

SESSION_EXPIRE_AT_BROWSER_CLOSE来设置是否关闭浏览器session过期
SESSION_ENGINE设置session的保存引擎,我是用的是'django.contrib.sessions.backends.db'

(session不仅可以保存在数据库里,还可以保存在缓存(memchache、redis),文件系统中,缓存+数据库,加密cookie中,需要设置不同的保存方式,即SESSION_ENGINE)

SESSION_COOKIE_AGE 设置cookie过期时间
SESSION_COOKIE_HTTPONLY session的cookie是否只支持http

2、cookie

cookie是浏览器为web服务器存储的一小段信息,每次浏览器请求页面的时候,它向服务器回送之前收到的cookie。cookie保存在浏览器的某个文件夹下。

3、一般django是采用session+cookie 的方式
1)每次用户第一次访问服务端, 把标识用户的唯一字符串session_id加到cookie里面,发送给客户端
2)服务器端保存随机字符串(sessionID:{用户信息})和session到期的时间至服务端(根据设置的保存方式)
数据库django_session表中的记录如下:
session_key session_data expire_date
54e70yd0uhnhkmghvsy8oxp3l3zi1m1z    YTA3MTJiMWM0ZjYxM2U2NTRlZDM2ZDY4NDQ4NWM5MjA3Nzk5YTkwMzp7InVzZXJuYW1lIjoieHR5IiwiaXNfbG9naW4iOnRydWV9     2018-10-10 09:13:42
8r4tfdnrii44xiotp872i59ke2sus250 YTA3MTJiMWM0ZjYxM2U2NTRlZDM2ZDY4NDQ4NWM5MjA3Nzk5YTkwMzp7InVzZXJuYW1lIjoieHR5IiwiaXNfbG9naW4iOnRydWV9 2018-09-20 07:52:19
3)下次来通过 cookie中的sessionID(键)获取用户信息值(值)
如request.session.get('username',None) ,意思是获取session中username的值,如果不存在返回None

猜你喜欢

转载自blog.csdn.net/a1496785/article/details/82882289