如何检查用户是否已登录?烧瓶



我有一个烧瓶登录功能问题。我需要创建一个系统,防止多个用户同时登录一个帐户。我试图实现的目标,是一种检查用户当前是否登录的方法,并拒绝访问试图登录的人,如果帐户已经登录。我试图使用:

user.is_active
user.is_authenticated

但他们总是在展示";真";,以下是代码的其余部分:是否有一个属性在用户登录/注销后发生更改?

def login():
if request.method == 'GET':
return render_template('login.html')
else:
login = request.form['login']
password = request.form['password'].encode('utf-8')
user = User.query.filter_by(username=f"{login}").first()
if user == None:
return "Non-Existing User"
else:
if bcrypt.checkpw(password,user.password.encode('utf-8')):
login_user(user)
return "Success"
else:
return "Bad creds."
@app.route('/logout')
@login_required
def logout():
logout_user()
return 'You are logged out'```

我不知道任何属性,但我们可以用另一种方式。您可以将类似令牌的东西和用户详细信息一起存储在数据库中。

class user(db.Model):
[...]
token = db.Column(db.String(20))     

当用户登录时,您可以生成一个随机的十六进制或字符串,并将其存储在数据库中。

当用户注销时,将令牌设置为False

在登录用户时,您可以检查token是否为False。

user = User.query.filter_by(username=user_input).first()
if user.token != False:
// allow user to login 
else:
//  don't allow him and show warning message.

最新更新