Flask 的cookie与session

Flask实现session的思路

  1. 客户端携带用户信息请求服务端验证。

  2. 服务端收到用户信息验证成功后,服务端再把用户信息经过严格的加密加盐生成session信息。并且把刚刚生成的session信息作为cookie的内容返回给客户端。

  3. 客户端收到以session信息为内容的cookie保存到本地。

  4. 客户端再次请求的时候会携带以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="随便"
"""

 

posted @ 2020-03-19 00:16  Hank·Paul  阅读(373)  评论(0编辑  收藏  举报