Flask中基于Token的身份认证
目录
- 下面是基于Token的身份认证的具体实现步骤
- 下面是一个基于Token的身份认证的示例代码
- 客户端请求示例
Flask提供了多种身份认证方式,其中基于Token的身份认证是其中一种常用方式。基于Token的身份认证通常是在用户登录之后,为用户生成一个Token,然后在每次请求时用户将该Token作为请求头部中的一个参数进行传递,服务器端在接收到请求后验证该Token是否有效。
下面是基于Token的身份认证的具体实现步骤
在用户登录成功之后,为该用户生成一个Token,通常使用jwt库进行生成。
将该Token返回给客户端,客户端需要将该Token存储起来,例如可以将该Token保存在浏览器的Cookie中,或者使用本地存储。
当客户端发送请求时,需要将该Token作为请求头部中的一个参数进行传递,例如可以将该Token放在Authorization字段中,例如
Authorization: Bearer <Token>
。服务器端在接收到请求时,从请求头部中获取该Token,并验证该Token是否有效。验证方法通常是使用jwt库进行验证,例如验证Token的有效期、签名等等。
如果Token验证成功,则认为该请求是合法的,可以继续处理;如果Token验证失败,则返回401 Unauthorized状态码。
下面是一个基于Token的身份认证的示例代码
from flask import Flask, request, jsonify
from flask_jwt_extended import create_access_token, jwt_required, JWTManager, get_jwt_identityapp = Flask(__name__)app.config['JWT_SECRET_KEY'] = 'super-secret'
jwt = JWTManager(app)users = {'john': 'password','susan': 'strongpassword'
}@app.route('/login', methods=['POST'])
def login():username = request.json.get('username', None)password = request.json.get('password', None)if not username or not password:return jsonify({"msg": "缺少用户名或密码"}), 400if username not in users:return jsonify({"msg": "未找到用户"}), 404if users[username] != password:return jsonify({"msg": "用户名或密码错误"}), 401access_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
这个例子中,/login
接口用来验证用户的用户名和密码,并生成一个 Token,/protected
接口用了 @jwt_required()
装饰器,表示只有在请求头中包含 Token 的请求才会通过身份验证。create_access_token
用来生成 Token,get_jwt_identity
用来获取当前用户的用户名。
客户端请求示例
1.登录,获取 Token:
curl -X POST \http://localhost:5000/login \-H 'Content-Type: application/json' \-d '{"username": "john","password": "password"
}'
- 发送包含 Token 的请求:
curl -X GET http://localhost:5000/protected -H 'Authorization: Bearer <token>'
其中<token>
是登录时获取到的Token。
-
Flask中基于Token的身份认证相关推荐
- Web应用中基于密码的身份认证机制(表单认证、HTTP认证: Basic、Digest、Mutual)
Web应用中基于密码的身份认证机制 背景概念 认证(Authentication) 会话管理 1 表单认证(Form-Based Authentication) 1.1 介绍 1.2 流程 2 通用的 ...
- 基于token与基于服务器的身份认证
基于token与基于服务器的身份认证 1.基于服务器的身份认证 我们清楚 http 协议是无状态的,也就是说,如果我们已经认证了一个用户,那么他下一次请求的时候,服务器不知道我是谁,我们就必须要再次认 ...
- PHP无状态对象,(PHP)基于Token的身份验证中对无状态的理解
假设我们设计的Token储存的信息为: 用户名.发行时间.过期时间.签名 在用户登录成功后,我们获取到用户的用户名.此时的时间戳,并将它们和我们设置的过期时间拼接在一起,组成一个字符串,假设为: $i ...
- 基于Token进行身份验证
1.基于服务器的验证 我们都是知道HTTP协议是无状态的,这种无状态意味着程序需要验证每一次请求,从而辨别客户端的身份. 在这之前,程序都是通过在服务端存储的登录信息来辨别请求的.这种方式一般都是通 ...
- 【转】基于Token的身份验证原理
目录 1 发展史 2 Cookie 3 Session 3.1 cookie和session的区别 4 Token 4.1 传统方式--基于服务器的验证 4.2 基于服务器验证方式暴露的一些问题 4. ...
- node实现基于token的身份验证
最近研究了下基于token的身份验证,并将这种机制整合在个人项目中.现在很多网站的认证方式都从传统的seesion+cookie转向token校验.对比传统的校验方式,token确实有更好的扩展性与安 ...
- 基于Token的身份验证的原理
目录 1 发展史 2 Cookie 3 Session 3.1 cookie和session的区别 4 Token 4.1 传统方式--基于服务器的验证 4.2 基于服务器验证方式暴露的一些问题 4. ...
- Pulsar 中使用 JWT 进行身份认证
Pulsar 中使用 JWT 进行身份认证 欢迎阅读 Pulsar 开源书籍<Pulsar入门与实践> 更好的阅读体验,请参考在线版本<使用 JWT 进行身份认证> Pulsa ...
- 什么是JWT? Token? 如何基于Token进行身份验证?
JWT (JSON Web Token) Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且 ...
最新文章
- 洛谷P4480 【[BJWC2018]餐巾计划问题】
- dsp-asic-fpga
- 字符串拷贝函数memcpy()、strncpy()和snprintf()性能之比较
- win10+vs2017+caffe(crnn)编译过程记录(验证成功)
- Python rjust() 方法
- width:100vh与min-height:calc(100vh + 51px)
- 对中级 Linux 用户有用的 20 个命令
- android 上传nexus_android发布到nexus私服
- UPUPW数据库密码的修改
- 有关i++问题,和一些另外的易错点
- [转载] 财经郎眼20120526:山东首富挑战国家电网
- 数列区间询问中的分块思想CF86D,BC#22-1004-NPY and girls
- 苹果计算机散热维修,手把手教你拆机MacBook Pro,作清灰散热处理,助你的Mac在夏天火力全开!...
- Dell 笔记本鼠标莫名乱跑
- 大话私服虚拟服务器,大话西游私服服务器
- AfterEffects CS6安装插件教程
- R数据科学-第六章用dplyr处理关系数据
- PV,UV,VV,IP
- ldd显示可执行模块的dependenc
- 电脑选购指南(内含各价位型号最新推选)
热门文章
- Web应用中基于密码的身份认证机制(表单认证、HTTP认证: Basic、Digest、Mutual)