首页 » PHP教程 » phpjwt扩大技巧_Flask 应用轨范的扩展 FlaskJWT

phpjwt扩大技巧_Flask 应用轨范的扩展 FlaskJWT

访客 2024-11-28 0

扫一扫用手机浏览

文章目录 [+]

安装

通过 pip 安装 Flask-JWT:

phpjwt扩大技巧_Flask 应用轨范的扩展  FlaskJWT

pip install flask-jwt

phpjwt扩大技巧_Flask 应用轨范的扩展  FlaskJWT
(图片来自网络侵删)

配置

在 Flask 运用中配置 JWT 所需的参数,常日在配置文件中设置:

# config.py

JWT_SECRET_KEY = 'your-secret-key'

JWT_TOKEN_LOCATION = ['headers']

JWT_HEADER_NAME = 'Authorization'

JWT_ACCESS_TOKEN_EXPIRES = timedelta(minutes=60)

JWT_REFRESH_TOKEN_EXPIRES = timedelta(days=30)

初始化

在 Flask 运用中初始化 Flask-JWT 扩展:

from flask import Flask

from flask_jwt import JWT

app = Flask(__name__)

app.config.from_object('config.Config')

jwt = JWT(app)

创建和验证令牌

创建 JWT 令牌常日涉及到用户登录的流程。
一旦用户成功登录,做事器将天生一个 JWT 令牌并发送给客户端。

from werkzeug.security import safe_str_cmp

@app.route('/login', methods=['POST'])

def login():

username = request.json.get('username', None)

password = request.json.get('password', None)

if username and password and safe_str_cmp(username, 'admin') and safe_str_cmp(password, 'password'):

token = jwt.encode({'username': username}, app.config['JWT_SECRET_KEY'])

return {'token': token}

else:

return {'error': 'Invalid credentials'}, 400

客户端在随后的每个要求中都须要携带这个令牌,常日是在 HTTP 要求的头部(Authorization header)。
做事器吸收到要求后,会验证令牌的有效性。

@app.before_request

def parse_jwt():

token = request.headers.get('Authorization', None)

if not token:

return jwt_required()

try:

# 验证令牌并获取用户信息

payload = jwt.decode(token, app.config['JWT_SECRET_KEY'])

except:

# 令牌无效或已过期

return jwt_required()

# 将用户信息存储在 g 工具中,供后续要求利用

g.current_user = payload.get('username')

刷新令牌

Flask-JWT 许可利用刷新令牌来延长访问令牌的有效期。
刷新令牌的有效期常日比访问令牌长很多。

from flask_jwt import refresh_token_required

@app.route('/refresh', methods=['POST'])

@refresh_token_required()

def refresh():

new_token = jwt.refresh_token_loader(request.json.get('refresh_token'))

return {'token': new_token}

保护路由

可以利用 @jwt_required() 装饰器来保护特定的路由,确保只有持有有效 JWT 的用户才能访问。

from flask_jwt import jwt_required

@app.route('/protected')

@jwt_required()

def protected():

return {'data': 'This is a protected resource only accessible with a valid JWT'}

Flask-JWT 是实现基于令牌的身份验证的便捷办法,它支持无状态认证,有助于构建可扩展且安全的 Flask 运用程序。
通过利用 JWT,可以减少对数据库的频繁查询,提高运用性能。

标签:

相关文章

语言游戏聚会的魅力,跨界交流的盛宴

在繁忙的都市生活中,一场别开生面的语言游戏聚会悄然兴起。这不仅是一场简单的娱乐活动,更是一次跨界交流的盛宴,一场思想的碰撞与火花。...

PHP教程 2024-12-29 阅读1 评论0

语言序列逻辑在现代传播中的运用与影响

语言序列逻辑,作为现代传播学中的重要理论之一,对于理解语言传播的规律、提高传播效果具有重要作用。在信息化、网络化时代,语言序列逻辑...

PHP教程 2024-12-29 阅读1 评论0