快速理解记忆cookie和session

Flask笔记

1.cookie:

cookie是由服务端生成的,发送给客户端,客户端保存,下次登录在请求报文中带上cookie数据;

在客户端(浏览器)进行状态保持,建议不存重要敏感信息, cookie基于域名安全,不同域名的cookie间不能相互访问

1.1设置cookie
  1. 登录请求成功后,使用cookie记录用户信息;

  2. 借助response对象设置cookie信息

3)返回响应对象在浏览器中保存cookie

response = make_response('login success')
response.set_cookie('username', ' Mercury', max_age=3600)
return response
1.2 提取cookie

1)浏览器再次请求首页的时候自动带上cookie,提取cookie中的键值对

2)借助request对象提取cookie

user_id = request.cookies.get('user_id', '')
return 'index %s' % user_id
1.3清除cookie
  1. 登出成功,清除cookie记录用户信息

  2. 借助response对象删除cookie信息

response = make_response('logout success')
response.delete_cookie('user_id')
return response

2.session()

敏感信息建议存储于服务端,而在服务端进行状态保持的是session

2.1session依赖于cookie

底层:

1)浏览器发出登录请求成功后,在服务器记录用户信息:session_id =1234,

“user_id” : 1, “username”: “Mercury”

from flask import session

...
# session本质是个字典 
session['use_id'] = '1'
session['username'] = 'Mercury'
return 'login success'

2)返回响应对象给浏览器,通过cookie携带session_id告诉浏览器已保存session,并把两者保存在浏览器中

3) 再次访问时,通过cookie带上session_id, 拿了session_id便可在服务端提取session的键值对

from flask import session

...
username = session.get('username')
user_id = session.get('user_id')
return 'index %s %s' % (username, user_id)

4)推出登陆时,删除session字典

session.pop('user_name', '')  # 重复删除了,便返回空
session.pop('user_id', '')
return 'logout success'

2.2session要设置加密字符串session_key

如上操作后会报RuntimeError错,解决方式如下:

# 1.创建配置类
class Config(object):
    # 加密字符串随意写,起混淆加密处理
    SECRET_KEY = 'aslugbgliauef&if*af'
# 2.创建app对象
app = Flask(__name__)
# 3.将配置类中的配置信息读取到项目中
app.config.from_object(Config)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值