Flask 的cookie与session
Flask实现session的思路
-
客户端携带用户信息请求服务端验证。
-
服务端收到用户信息验证成功后,服务端再把用户信息经过严格的加密加盐生成session信息。并且把刚刚生成的session信息作为cookie的内容返回给客户端。
-
客户端收到以session信息为内容的cookie保存到本地。
-
客户端再次请求的时候会携带以session信息为内容的cookie去访问服务端,服务端取出session信息经过解密得到用户的信息
Flask实现cookie与session
from flask import Flask app = Flask(__name__)
cookies
from flask import Flask, make_response, request @app.route('/') def index(): response = make_response('ok') #先要创建一个response对象 response.set_cookie('key','value') #用set_cookie设置cookies cookies = request.cookies #获取所有cookies且以字典的形式的返回 cookies_key = request.cookies['key'] #因为返回是cookies的字典对象所以我们可以用字典取值取出指定的cookie return response
session
# 要用session,必须app配置一个密钥 app.secret_key = "adas" app.config['SESSION_COOKIE_NAME']="session_key" #这是配置网页中sessions显示的key @app.route("/",) def index(): #如何设置sessoion # 1 导入session # 2 给sessoion设置值 #session本身就是个字典相当于把一个username:xxx键值对丢进去,然后Flask会把整个字典结合secret_key进行加密 #1.生成一个随机的字符串 #2 往数据库存 #3 写入cookie返回浏览器 session['name'] = "xxx" return "ok" @app.route("/login") def login(): # sessions = session #获取所有session session_name = session["name"]#获取指定session # session.pop('name') #删除session原理和字典的删除方式一样 return "login" if __name__ == '__main__': app.run()
总结:
""" 1、全局导入session,把session,当字典存值,取就当字典取值 2、原理之存session 当响应要返回给客户端时候,会调用sesssion_interface中的save_session方法。把全局session字典做加密得到val,然后将这个val设置到cookie中。cookie的键为配置文件中的session_cookie_name,值就是我们session字典加密得到的结果。 3、原理之取session 当flask接收到请求的时候,会调用sesssion_interface中的open_session方法,该方法中从cookie中取键为配置文件中session_cookie_name的cookie值,得到这个值以后做解密。然后赋值给全局的session字典。这样我们就可以取到之前flask设置session。 注意:用session必须配置app.secret_key="随便" """