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

本文共 1488 字,大约阅读时间需要 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原理与中间件

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月27日 14时10分39秒

关于作者

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

推荐文章

java监控其他服务器运行状态_windows服务器监控多个tomcat运行状态 2019-04-21
java给学生按总成绩排名_java - 输入学生成绩,取它们的平均值,然后通过排名等级的学生 - SO中文参考 - www.soinside.com... 2019-04-21
java构造函数有什么用_java构造函数有什么用,怎么用 2019-04-21
mysql 匹配 隔开的_按空格分隔关键字并搜索MySQL数据库 2019-04-21
java factory用法_怎样使用Java实现Factory设计模式 2019-04-21
java窗口内容如何复制_求助Java窗口菜单如何实现复制粘贴剪切等功能(内附源代码)... 2019-04-21
盾神与砝码称重java_[蓝桥杯][算法提高VIP]盾神与砝码称重 2019-04-21
java输出狗的各类信息_第九章Java输入输出操作 2019-04-21
java notify怎么用_java 如何使用notify() 2019-04-21
java加载指定文件为当前文本,java:如何使用bufferedreader读取特定的行 2019-04-21
java metrics 怎么样,Java metrics 2019-04-21
在vscode中php语言配置,Visual Studio Code C / C++ 语言环境配置 2019-04-21
php怎么翻译数据库中的中文,javascript – 如何将翻译后的文本插入数据库php 2019-04-21
普朗克公式matlab,用MATLAB实现普朗克函数积分的快捷计算.pdf 2019-04-21
swoolec+%3c?php,PHP+Swoole并发编程的魅力 2019-04-21
php 404配置,phpcms如何配置404 2019-04-21
matlab wash矩阵产生,洗衣机净衣效能与衣损程度的关系分析 2019-04-21
php中如何调用sql server,php调用SQL SERVER 2008及以上版本的方法 2019-04-21
python多线程实现kmeans,3种方式实现python多线程并发处理 2019-04-21
matlab 变量不存在,matlab程序运行时提示变量未定义 2019-04-21