Flask生产Token的过程方法

本文介绍了如何在Flask应用中生成和校验JSON Web Token(JWT)。通过导入jwt库,设置密钥,定义generate_token和check_token函数来创建和验证token。此外,还展示了如何生成刷新token,其有效期更长。

1.生产Token:

用token校验身份,是前后端交互的常用方式。
它有以下特性:

 *  会失效

*  加密

*  可以根据它拿到用户的信息

2:生产方法:

# 依赖导包:
import jwt
from flask import current_app


def  generate_token(payload, expiry):
    key = current_app.config.get('SECRET_KEY')

    if 'expiry' not in payload:
        payload['expiry'] = expiry
    try:
        token = jwt.encode(payload, key, algorithm='HS256')
        return token
    except Exception as e:
        print('获取token报错信息e', e)
        return e
 

token的校验:

def check_token(token):
    """验证token"""
    key = current_app.config.get('SECRET_KEY')
    payload = jwt.decode(token, key, algorithms='HS256')
    return payload

### 使用方法Flask 中,session 基于 cookie 加密实现,使用前需设置 `SECRET_KEY`。以下是设置和获取 session 的示例代码: ```python from flask import Flask, session app = Flask(__name__) # 设置 SECRET_KEY app.config['SECRET_KEY'] = 'dafssg231bfvxvdsfwrqdqfafaffsgsbfsfsgs' @app.route("/set_session") def set_session(): """设置 session""" session['username'] = 'jingtian' session['info'] = { "name": "jingtian", "age": 16 } print(session, type(session)) return "set_session" @app.route("/get_session") def get_session(): """获取 session""" username = session.get('username') info = session.get('info') if username and info: return f"Username: {username}, Info: {info}" return "Session not set" if __name__ == '__main__': app.run(debug=True) ``` 在上述代码中,`set_session` 函数用于设置 session 的值,`get_session` 函数用于获取 session 的值。 ### 原理 Flask 中的 session 是基于客户端 cookie 实现的。当设置 session 时,Flask 会将 session 数据进行序列化,然后使用 `SECRET_KEY` 对其进行加密,最后将加密后的数据存储在客户端的 cookie 中。当客户端再次请求服务器时,会携带这个 cookie,服务器接收到 cookie 后,使用相同的 `SECRET_KEY` 对其进行解密,从而获取 session 数据。 ### 应用场景 - **用户认证**:在用户登录成功后,将用户的相关信息(如用户名、用户 ID 等)存储在 session 中。在后续的请求中,通过检查 session 中的信息来验证用户是否已经登录。 - **购物车功能**:在电商网站中,用户将商品添加到购物车时,可以将购物车的信息存储在 session 中。这样,用户在浏览不同页面时,购物车的信息不会丢失。 - **多页面表单数据传递**:当一个表单需要分多个页面填写时,可以将前一个页面填写的数据存储在 session 中,以便在后续页面中使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值