Python Flask token身份认证的示例代码(附完整代码)

 更新时间:2023年11月08日 10:26:21   作者:卑微阿文  
在Web应用中,经常需要进行身份认证,以确保只有授权用户才能访问某些资源,本文主要介绍了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身份认证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • tensorflow2.0的函数签名与图结构(推荐)

    tensorflow2.0的函数签名与图结构(推荐)

    这篇文章主要介绍了tensorflow2.0的函数签名与图结构,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Python中paramiko模块的基础操作与排错问题

    Python中paramiko模块的基础操作与排错问题

    python的ssh库操作需要引入一个远程控制的模块——paramiko,可用于对远程服务器进行命令或文件操作,这篇文章主要介绍了Python学习之paramiko模块的基础操作与排错,需要的朋友可以参考下
    2022-09-09
  • Python torch.fft.rfft()函数用法示例代码

    Python torch.fft.rfft()函数用法示例代码

    大家应该都知道新旧版的torch中的傅里叶变换函数在定义和用法上有所不同,下面这篇文章主要给大家介绍了关于Python torch.fft.rfft()函数用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • pyhton找不到module的问题及解决方案

    pyhton找不到module的问题及解决方案

    设置PYTHONPATH环境变量可以告诉Python解释器在哪里查找模块和包,通过在bash中使用export命令,并将路径追加到PYTHONPATH变量中,可以确保Python在任何目录下都能找到指定的模块,这样可以避免ModuleNotFoundError错误
    2025-12-12
  • python实现监听键盘

    python实现监听键盘

    这篇文章主要为大家详细介绍了python实现监听键盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • python之模拟鼠标键盘动作具体实现

    python之模拟鼠标键盘动作具体实现

    这篇文章主要介绍了python之模拟鼠标键盘动作具体实现,有需要的朋友可以参考一下
    2013-12-12
  • 深度学习的MNIST手写数字数据集识别方式(准确率99%,附代码)

    深度学习的MNIST手写数字数据集识别方式(准确率99%,附代码)

    这篇文章主要介绍了深度学习的MNIST手写数字数据集识别方式(准确率99%,附代码),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python2.7.10以上pip更新及其他包的安装教程

    Python2.7.10以上pip更新及其他包的安装教程

    今天小编就为大家分享一篇Python2.7.10以上pip更新及其他包的安装教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python中的迭代器你了解吗

    Python中的迭代器你了解吗

    迭代器是一种特殊的对象,它实现了迭代协议,允许按照一定的顺序逐个访问元素,本文就来带大家深入了解一下Python中迭代器的使用,需要的可以参考下
    2023-05-05
  • 一文全面详解Python变量作用域

    一文全面详解Python变量作用域

    变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友可以参考下
    2025-06-06

最新评论