python项目中session和cookie的使用

1、cookie和session是什么

1.1 cookie

  1. cookie是存储在浏览器中的用户信息的记录,他的作用就是存储用户的信息,当你访问一个网站的时候,浏览器会携带cookie访问服务器,服务器根据浏览器传过来的cookie判断,你是否是已经登录的用户,如果没登录或者登录过期,服务器会返回一个重定界面,或者不给数据,直接返回500
  2. cookie就相当于一个用户凭证的记录,只要你有这个凭证就可以获得数据库中的数据,这也是为什么有的反爬机制会加cookie的原因,直接点击浏览器中的小锁,就可以查看cookie

1.2 session

  1. session是服务器为了保存用户状态而创建的一个对象,存储在服务器当中,储存位置可以变化,mysql、redis都可以,从前端浏览器中传过来的cookie就用来和session做对比,如果一致就代表他已经登录,直接返回给他数据
  2. session一般存储在redis中,代码如下
    SESSION_TYPE = 'redis' SESSION_REDIS = redis.Redis(host=REDIS_HOST, port=REDIS_PORT) SESSION_USE_SIGNER = True SECRET_KEY = 'ASDFFSASEFEOFIGN' PERMANENT_SESSION_LIFETIOME = 8640 # 有效时间为一天单位是秒,不设置即为永久登录

2、状态保持session和上下文session的区别

flask中的sessoin有两种导入方式,不管是哪种导入方式都得设置密钥,第二种导入是依赖于第一种的,如果想要使用第二种,必须要引入第一种,如果设置了第二种,两者的session储存的信息会存放在一处
1⃣️from flask import sessoin(请求上下文对象)
用来操作记录http请求的数据或session信息,在请求过程中存在,请求结束后就被销毁;在flask中,一旦添加session[‘xxxxx’] = xxxx后,框架将通过键值、时间及秘钥自动生成一个加密字符串并通过cookie中的’session’键反馈给客户端,将用户信息保存在sessoin中。
2 from flask_session import Session(状态保持)
如果将session全都存在服务器中,服务器扛不住,为了减轻服务器的压力,把session放到redis数据库中,读取数据也是更快的,这个功能的实现靠的就是flask-session扩展中的Session; 即session是基于浏览器的cookie进行保存在服务器上的,flask_session可以把session的值存储在redis数据库中。这个session无论用户登录还是退出,只要不过期,就一直存在,与框架无关,与语言无关,便于用户在浏览器端再次便捷登录。

3、flask中的csrf验证

csrf(Cross-site request forgery):跨站请求伪造,为了解决这个问题,浏览器有同源策略,代码有令牌验证,即csrf验证
在这里插入图片描述
1.后端生成 csrf_token 的值,在前端请求登录或者注册界面的时候将值保存到cookie中

csrf_token = csrf.generate_csrf() response.set_cookie('csrf_token', csrf_token)
2.在前端发起请求时,在表单或者在请求头中带上指定的 csrf_token
3.后端在接受到请求之后,取到前端发送过来的 csrf_token,与第1步生成的 csrf_token 的值进行校验
4.如果校验对 csrf_token 一致,则代表是正常的请求,否则可能是伪造请求,不予通过

pip install flask-wtf
from flask_wtf imoport csrf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值