在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ flask_jwt 如何實(shí)現(xiàn)用戶注銷

flask_jwt 如何實(shí)現(xiàn)用戶注銷

問題描述

登錄使用的flask_jwt封裝好的login,獲取當(dāng)前用戶信息用的以下代碼,但是不知道如何實(shí)現(xiàn)注銷用戶

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

# jwt代碼
user_info_dao = UserInfoDao()
jwt = JWT(app, user_info_dao.authenticate, user_info_dao.identity)


from flask_jwt import jwt_required, current_identity
# 獲取當(dāng)前用戶信息用的以下代碼
@bp_auth.route('/getuser',methods=['GET'])
@jwt_required()
def get_user_info():
    user_info = current_identity.to_dict()

    return json_result(True, u'獲取當(dāng)前用戶信息成功',user_info)

你期待的結(jié)果是什么?實(shí)際看到的錯誤信息又是什么?

回答
編輯回答
未命名

不好意思~ jwt是不支持主動使用戶token過期的。

要知道用戶登錄身份的校驗(yàn),基本就兩種:

①客戶端存儲一個隨機(jī)串,發(fā)送請求時攜帶該串。服務(wù)器接收到之后拿著這個串去存儲中做比對,找到對應(yīng)的數(shù)據(jù)。

②將所有數(shù)據(jù)都存儲到客戶端。這樣就有會安全問題,因?yàn)榉?wù)器無法確定那些數(shù)據(jù)是有效的,那些數(shù)據(jù)是偽造的。所以就引入了簽名的概念。用算法的方式來保證數(shù)據(jù)的可信性。

早期的網(wǎng)站基本就一個主站,也沒有分布式的部署。所以多數(shù)都采用第一種方式。
但隨著訪問量的增加,開始做分布式,就涉及到了session共享的問題。比如①中的存儲,使用redis來達(dá)到共享數(shù)據(jù)的效果。但是這樣會在服務(wù)器中存儲大量的數(shù)據(jù)。

然后呢,就出來另外一種。不在服務(wù)器存儲數(shù)據(jù)。其中一個就是jwt。
jwt在生成時,可以設(shè)置有效期。理論上 一個用戶可以產(chǎn)生無數(shù)個jwt,且jwt的有效期獨(dú)立。

如果你想將一個還在有效期內(nèi)的jwt置為無效,那就必須要在服務(wù)器存儲數(shù)據(jù),這就違背了他的設(shè)計原則~

其實(shí)。他的退出,就是客戶端主動將jwt扔掉(假設(shè)不會被其他人撿到)~~~~~ 那么這個jwt不就不存在了嗎~ 這不就完成注銷功能了嗎~

2017年10月21日 23:22