Flask扩展实现HTTP令牌token认证HTTPTokenAuth
2019-05-19 13:59
861 查看
Token认证
在restful设计中,用户认证模式通常使用json web token,而不会使用传统的HTTP Basic认证(传入账号密码)
token认证模式如下:在请求header中加入token
Flask中的实现
flask扩展flask-httpauth提供了该认证方法
$ pip install flask-httpauth
首先实例化
auth = HTTPTokenAuth(scheme='JWT')
上面的
scheme就是token前面的字符串,可以自定义,这里我使用JWT
源代码如下:
它提供了一个装饰器,里面可以实现自己的token检验方法
@auth.verify_token def verify_token(token): pass #这里需要自定义
Flask中的itsdangerous提供了令牌生成和校验的方法
from itsdangerous import TimedJSONWebSignatureSerializer, BadSignature,\ SignatureExpired
组合起来:
@auth.verify_token def verify_token(token): s = TimedJSONWebSignatureSerializer( current_app.config['SECRET_KEY'] ) try: data = s.loads(token) print(data) except BadSignature: raise AuthFailed(msg='token不正确') except SignatureExpired: raise AuthFailed(msg='token过期') uid = data['uid'] return True
通过验证后返回True代表token认证成功!
如果有需要登录的视图,就可以使用如下装饰器:
@api.route('/login_require/', methods=['POST']) @auth.login_required def func(): pass
只有Token认证成功才能进入该视图
相关文章推荐
- 学习笔记---使用prototype.js扩展struts标签实现xmlhttprequest
- python(通过flask实现一个http接口)调用这个接口实现第三方smtp发送邮件
- 基于HTTP登录系统的扩展(代码设计实现UI部分)
- 用flask的扩展实现的简单的页面登录
- ThinkPHP第二十二天(表单令牌、相对路径、扩展配置载入、$Think获取系统变量、$_SERVER('HTTP_REFERER')前页地址)
- Flask 通过扩展来实现登录验证
- 用flask的扩展实现的简单的页面登录
- 获取需要登陆才能被访问的页面,HttpClient(扩展HttpWebRequest)来实现
- python扩展实现方法--python与c混和编程 转自:http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html
- Python Flask框架扩展操作示例
- 解剖Nginx·模块开发篇(3)ngx_http_hello_world_module 模块的基本函数实现
- 同事分享的HTML5 实现HTTP地址MP3播放的方案
- 利用HttpSessionListener实现网站在线人数统计功能
- 关于C#提交表单post和get的实现 HttpWebRequest 和ttpebeponse
- 使用HttpMoudle和IPrincipal实现自定义身份及权限认证
- 用Java实现断点续传(HTTP)
- 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他
- ASP.NET 防盗链的实现[HttpHandler]
- Node 下 Http Streaming 的跨浏览器实现
- 网络编程(4)——HttpURLConnection/HttpClient基本实现