Python Flask token身份认证的示例代码(附完整代码)
作者:卑微阿文
前言
Python Flask是一个使用Python编写的轻量级Web应用框架,它可以非常方便地搭建Web应用。在Web应用中,经常需要进行身份认证,以确保只有授权用户才能访问某些资源。本文将介绍如何使用token进行身份认证,以及如何在Python Flask中实现token身份认证。
一、什么是token身份认证
token身份认证(Token-based authentication)是一种常见的Web身份认证方式,它是利用token来确保用户的身份。每个用户在登录后都会得到一个token,通过该token来识别用户的身份,这种方式可以减少服务器的负担,提高身份认证的效率。在使用token身份认证时,用户成功登录后,服务器会生成一个token,将该token发送给客户端。客户端在后续的请求中,需要在请求头中携带该token,以便服务器可以识别用户的身份。服务器接收到请求后,会从token中解析出用户的身份信息,并对该用户进行身份认证。
二、如何实现token身份认证
在Python Flask中,实现token身份认证需要以下步骤:
1、安装所需的依赖
flask flask_jwt_extended
可以使用pip命令来安装:
pip install flask pip install flask_jwt_extended
2、创建一个Flask应用
在Python代码中引用flask库,并创建一个Flask应用:
from flask import Flask app = Flask(__name__)
3、配置密钥
需要在Flask应用中配置一个密钥secret_key,用于生成token和验证token的有效性。可以在Flask应用中添加如下代码:
app.config['JWT_SECRET_KEY'] = 'my_secret_key'
其中,'my_secret_key'可以替换成其他随机字符串。
4、创建用户登录接口
在Flask应用中,需要创建一个接口,用于用户登录,用户输入正确的用户名和密码后,生成一个token,返回给客户端。可以在Flask应用中添加如下代码:
from flask import request, jsonify from flask_jwt_extended import create_access_token @app.route('/login', methods=['POST']) def login(): username = request.json.get('username', None) password = request.json.get('password', None) if username != 'admin' or password != 'admin': return jsonify({"msg": "Bad username or password"}), 401 access_token = create_access_token(identity=username) return jsonify(access_token=access_token), 200
其中,'/login'是接口路径,使用POST方法,接收用户名和密码。如果用户名或密码错误,则返回401状态码和错误提示。如果用户名和密码正确,则使用create_access_token方法生成一个token,该token的有效期默认设置为15分钟。
5、创建需要身份认证的接口
在Flask应用中,有些接口需要进行身份认证才能访问,可以使用@jwt_required装饰器来实现。可以在Flask应用中添加如下代码:
from flask_jwt_extended import jwt_required, get_jwt_identity @app.route('/protected', methods=['GET']) @jwt_required() def protected(): current_user = get_jwt_identity() return jsonify(logged_in_as=current_user), 200
其中,'/protected'是需要身份认证的接口路径,使用GET方法。使用@jwt_required装饰器来表示需要进行token身份认证。在接口中,可以使用get_jwt_identity()方法获取当前用户的身份信息。
6、启动Flask应用
在Python代码中添加如下代码,启动Flask应用:
if __name__ == '__main__': app.run(debug=True)
三、完整代码示例
from flask import Flask, request, jsonify from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity app = Flask(__name__) app.config['JWT_SECRET_KEY'] = 'my_secret_key' @app.route('/login', methods=['POST']) def login(): username = request.json.get('username', None) password = request.json.get('password', None) if username != 'admin' or password != 'admin': return jsonify({"msg": "Bad username or password"}), 401 access_token = create_access_token(identity=username) return jsonify(access_token=access_token), 200 @app.route('/protected', methods=['GET']) @jwt_required() def protected(): current_user = get_jwt_identity() return jsonify(logged_in_as=current_user), 200 if __name__ == '__main__': app.run(debug=True)
四、总结
本文介绍了如何在Python Flask中使用token进行身份认证。通过以上步骤,可以快速地搭建一个基于token的身份认证系统。在实际应用中,还需要考虑如何管理token的有效性、token的过期时间等问题。
到此这篇关于Python Flask token身份认证的示例代码(附完整代码)的文章就介绍到这了,更多相关Flask token身份认证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!