2
我有一個寫在Flask的Web服務。用戶A使用一些用戶名登錄到服務。我希望用戶B無法使用相同的用戶名登錄,直到用戶A的會話過期。換句話說,我想禁用每個用戶同時登錄。我該怎麼做Flask-Login?禁止同時登錄從Flask登錄的多個不同地方登錄
我有一個寫在Flask的Web服務。用戶A使用一些用戶名登錄到服務。我希望用戶B無法使用相同的用戶名登錄,直到用戶A的會話過期。換句話說,我想禁用每個用戶同時登錄。我該怎麼做Flask-Login?禁止同時登錄從Flask登錄的多個不同地方登錄
您需要做的是在數據庫的用戶模型中存儲某種會話令牌。
class User(db.Model):
....
session_token = db.Column(db.String(40), index=True)
當用戶登錄時,會生成會話令牌並將其保存到數據庫中。
更新您的函數以返回會話令牌而不是用戶標識。
def get_id(self):
return str(self.session_token)
在你user_loader
回調您查找基於令牌的用戶:
@lm.user_loader
def load_user(session_token):
return User.query.filter_by(session_token=session_token).first()
採用這種設置,令牌將在每次登錄時,它會自動失效前幾屆會議進行更新。
當用戶A登錄時,保持在服務器端的信息(數據庫,文件等),然後經常檢查從服務器端的這些信息洛之前,如果用戶已經登錄。 – codegeek
你知道這個實現的地方的例子嗎?我明白了,但我想確保我可以正確地做到這一點 – themantalope
有人能夠解決這個問題嗎? –