Django中session

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()设置超时时间 单位为秒
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值