Django中session
发布日期:2022-03-02 13:23:46 浏览次数:11 分类:技术文章

本文共 1448 字,大约阅读时间需要 4 分钟。

Session
Session与cookie类似,session是一次浏览器和服务器的交互,也可以用于用户验证。
session是存储于服务器端
cookie是存储在用户浏览器端
所以cookie不适合存放敏感信息
session可以理解成存放在服务器的字典,每次用户登录发生请求时,session自动生成一串字符串给用户,并在服务器端生成该字符串的字典,这样子在客户端只能看到一串字符串,信息都藏在服务器端该字符串的字典下,更加安全。字符串字典包含着用户的信息及cookie,session也要基于cookie认证,单靠session无法认证

session用户认证
下面我们利用session尝试进行用户认证,首先我们简单的编辑好,html输入账号密码然后通过post提交在这里插入图片描述然后在views方法下进行认证,这里我们简单的认证下账号密码,对的话即设置session,我们要做的是1.生成随机字符串,2.写到用户浏览器cookie中,3.保存到session中,4.在随机字符串对应字典设置相关内容,这四步通过一句话即可解决
request.session[‘key’]=value
在这里插入图片描述成功登录之后来到index页面通过
request.session[‘key’]获取value
我前面设置了is_login为True,所以下图直接if 默认为True
在这里插入图片描述至此我们成功的用session完成了用户认证

sesssion存储
session不仅仅可以放在数据库,只是默认放在数据库,他可以放在缓存,文件,缓存+数据库,以及加密cookie中,相对来说我们小的用数据库和文件就足够了

1.缓存session
在Django Setting中添加下列代码即可 存储在缓存中

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 引擎
SESSION_CACHE_ALIAS = 'default'
# 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置

2.文件Session
setting中配置如下代码

SESSION_ENGINE = 'django.contrib.sessions.backends.file'
# 引擎SESSION_FILE_PATH = os.path.join(BASE_DIR,'files')则存储在目录下的files文件下,此处填路径

3.缓存+数据库Session

SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
# 引擎

4.加密cookie
也就是存储在cookie中,不过是加密的存储

SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   # 引擎

session默认配置
下图为session的默认配置,不修改的情况就按照下图配置,如倒数第二个为当关闭浏览器时关闭session,使session过期,默认是不开启的,session默认过期时间为2周 也就是1209600秒
倒数第一个是每次请求页面是否保存session,例如重新设置了session的过期时间的话,每次请求就会刷新session过期时间在这里插入图片描述
超时时间

request.session.set_expiry(值)设置超时时间 单位为秒

转载地址:https://blog.csdn.net/WOSHIBEIZHE/article/details/120916228 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Django的Cookie是什么?
下一篇:Django之CSRF原理与中间件

发表评论

最新留言

感谢大佬
[***.8.128.20]2023年01月28日 02时24分26秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章