在restful設計中,用戶認證模式一般使用json web token,而不會使用傳統的HTTP Basic認證(傳入帳號密碼)
token認證模式以下:在請求header中加入token
python
flask擴展flask-httpauth提供了該認證方法web
$ pip install flask-httpauth
首先實例化json
auth = HTTPTokenAuth(scheme='JWT')
上面的scheme
就是token前面的字符串,能夠自定義,這裏我使用JWT
源代碼以下:
flask
它提供了一個裝飾器,裏面能夠實現本身的token檢驗方法api
@auth.verify_token def verify_token(token): pass #這裏須要自定義
Flask中的itsdangerous提供了令牌生成和校驗的方法restful
from itsdangerous import TimedJSONWebSignatureSerializer, BadSignature,\ SignatureExpired
組合起來:app
@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認證成功!
若是有須要登陸的視圖,就能夠使用以下裝飾器:ui
@api.route('/login_require/', methods=['POST']) @auth.login_required def func(): pass
只有Token認證成功才能進入該視圖設計