flask_jwt_extended 生成token 写一个例子给我
时间: 2023-05-13 18:04:57 浏览: 77
好的,以下是一个使用 flask_jwt_extended 生成 token 的例子:
```python
from flask import Flask
from flask_jwt_extended import JWTManager, create_access_token
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # 设置 JWT 密钥
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
# 假设这里有一个验证用户身份的过程
user_id = '123'
access_token = create_access_token(identity=user_id) # 生成 token
return {'access_token': access_token}
if __name__ == '__main__':
app.run()
```
在这个例子中,我们首先创建了一个 Flask 应用,并设置了 JWT 密钥。然后,我们定义了一个 `/login` 路由,用于验证用户身份并生成 token。在 `create_access_token` 函数中,我们传入了一个 `identity` 参数,这个参数可以是任何标识用户身份的信息,比如用户 ID。最后,我们将生成的 token 返回给客户端。
相关问题
flask_jwt_extended 生成token 验证token 写一个例子给我
好的,下面是一个使用 flask_jwt_extended 生成和验证 token 的例子:
```python
from flask import Flask
from flask_jwt_extended import JWTManager, jwt_required, create_access_token, get_jwt_identity
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # 设置 JWT 密钥
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
# 假设这里有一个验证用户身份的函数 verify_user(username, password)
username = request.form['username']
password = request.form['password']
if verify_user(username, password):
# 生成 token
access_token = create_access_token(identity=username)
return {'access_token': access_token}
else:
return {'error': 'Invalid username or password'}, 401
@app.route('/protected', methods=['GET'])
@jwt_required() # 需要验证 token
def protected():
# 获取 token 中的身份信息
current_user = get_jwt_identity()
return {'message': f'Hello, {current_user}!'}
if __name__ == '__main__':
app.run()
```
在这个例子中,我们使用 JWTManager 创建了一个 Flask 扩展,然后在登录时生成 token,保护某些路由时需要验证 token。注意,这里的 JWT 密钥应该是一个随机的、足够复杂的字符串,不要直接使用上面的示例中的 "super-secret"。
flask_jwt_extended 主动销毁token 写一个例子给我
当用户注销或者需要退出登录时,我们需要主动销毁token,以保证用户的安全性。下面是一个使用 flask_jwt_extended 库实现主动销毁token的例子:
```python
from flask import Flask
from flask_jwt_extended import JWTManager, jwt_required, create_access_token, get_jwt_identity, unset_jwt_cookies
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # 设置JWT的密钥
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
# 用户登录成功后,生成token并返回给客户端
access_token = create_access_token(identity='user_id')
return {'access_token': access_token}
@app.route('/logout', methods=['POST'])
@jwt_required() # 需要登录才能访问
def logout():
# 主动销毁token
unset_jwt_cookies()
return {'message': 'Logged out successfully'}
if __name__ == '__main__':
app.run()
```
在上面的例子中,我们定义了两个路由:`/login` 和 `/logout`。当用户登录成功后,`/login` 路由会生成一个token并返回给客户端。当用户需要退出登录时,`/logout` 路由会主动销毁token,以保证用户的安全性。
需要注意的是,在 `/logout` 路由中,我们使用了 `unset_jwt_cookies()` 方法来主动销毁token。这个方法会清除客户端的token,使其失效。