Flask-HTTPAuth
我们引入 Flask-HTTPAuth 安全机制,客户端要使用API需要录入用户名和密码。
例如保护一个接口,需要传递账户和密码才能访问
@user.route('', methods=['GET']) # 被保护的接口,需要登陆才能访问 @auth.login_required def get_user(): return 'get_user'
@auth.login_required 加入这个装饰器,此借口必须登陆后才能访问
定义路由验证
from flask_httpauth import HTTPBasicAuth auth=HTTPBasicAuth() #路由权限保护验证,这里可以接收到客户端传递的用户和密码,用户密码是Base64加密后的 @auth.verify_password def verify_token(account,password): pass
客户端传递方式:
完整代码:
from flask import current_app, g, jsonify from flask_httpauth import HTTPBasicAuth from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired auth = HTTPBasicAuth() # 路由权限保护验证token是否失效 @auth.verify_password def verify_token(token, password): user_info = verify_auth_token(token) # 出现错误返回False不会进入路由 if not user_info: return False else: g.user = user_info return True @auth.error_handler def error_handler(): return jsonify({'code': 401, 'message': 'token不合法'}) # BadSignature 捕捉token是否解析成功 # SignatureExpired 捕捉token是否过期 def verify_auth_token(token): s = Serializer(current_app.config['SECRET_KEY']) try: data = s.loads(token) except BadSignature: return False except SignatureExpired: return False uid = data['uid'] nickname = data['nickname'] return { 'uid': uid, 'nickname': nickname }
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接