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
有人能够解决这个问题吗? –