創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來(lái)堅(jiān)持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)公司是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、軟件開(kāi)發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺(jué)傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!小編給大家分享一下Flask實(shí)現(xiàn)HTTP令牌token認(rèn)證的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
Token認(rèn)證
在restful設(shè)計(jì)中,用戶認(rèn)證模式通常使用json web token,而不會(huì)使用傳統(tǒng)的HTTP Basic認(rèn)證(傳入賬號(hào)密碼)
token認(rèn)證模式如下:在請(qǐng)求header中加入token
Flask中的實(shí)現(xiàn)
flask擴(kuò)展flask-httpauth提供了該認(rèn)證方法
$ pip install flask-httpauth
首先實(shí)例化
auth = HTTPTokenAuth(scheme='JWT')
上面的scheme就是token前面的字符串,可以自定義,這里我使用JWT
源代碼如下:
它提供了一個(gè)裝飾器,里面可以實(shí)現(xiàn)自己的token檢驗(yàn)方法
@auth.verify_token def verify_token(token): pass #這里需要自定義
Flask中的itsdangerous提供了令牌生成和校驗(yàn)的方法
from itsdangerous import TimedJSONWebSignatureSerializer, BadSignature,\ SignatureExpired
組合起來(lái):
@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過(guò)期') uid = data['uid'] return True
通過(guò)驗(yàn)證后返回True代表token認(rèn)證成功!
如果有需要登錄的視圖,就可以使用如下裝飾器:
@api.route('/login_require/', methods=['POST']) @auth.login_required def func(): pass
只有Token認(rèn)證成功才能進(jìn)入該視圖。
看完了這篇文章,相信你對(duì)Flask實(shí)現(xiàn)HTTP令牌token認(rèn)證的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!