如何使用flask登录将登录限制为单个用户?
我对Flask应用程序开发还不熟悉。目前,我在Flask服务器上部署了一个ML应用程序 现在,任何人都可以注册并登录来运行ML推理。但我希望活动用户成为单个用户。这意味着,如果任何用户在部署的站点中处于活动状态,则其他用户都无法登录该站点 以下是一些相关代码:如何使用flask登录将登录限制为单个用户?,flask,flask-sqlalchemy,flask-wtforms,flask-login,Flask,Flask Sqlalchemy,Flask Wtforms,Flask Login,我对Flask应用程序开发还不熟悉。目前,我在Flask服务器上部署了一个ML应用程序 现在,任何人都可以注册并登录来运行ML推理。但我希望活动用户成为单个用户。这意味着,如果任何用户在部署的站点中处于活动状态,则其他用户都无法登录该站点 以下是一些相关代码: from flask_login import ( LoginManager, UserMixin, login_user, login_required, logout_user, cur
from flask_login import (
LoginManager,
UserMixin,
login_user,
login_required,
logout_user,
current_user,
)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50), unique=True)
email = db.Column(db.String(50), unique=True)
password = db.Column(db.String(80))
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
class LoginForm(FlaskForm):
username = StringField(
"Username", validators=[InputRequired(), Length(min=4, max=50)]
)
password = PasswordField(
"Password", validators=[InputRequired(), Length(min=8, max=80)]
)
remember = BooleanField("Remember me")
@app.route("/login", methods=["GET", "POST"])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user:
if check_password_hash(user.password, form.password.data):
login_user(user, remember=form.remember.data)
return redirect(url_for("index"))
return redirect(url_for("error", code="500.3"))
return render_template("login.html", form=form)
有人对我如何实现我的想法有什么建议吗?如果有人知道内置功能可能会有所帮助,我将使用
Flask登录。试试Flask limiter,Flask limiter允许您设置页面或IP地址的限制
访问我不知道任何特定功能,但您可以在用户
模型中使用布尔值,例如登录
。然后,每当有人登录时,您都会查询所有用户的登录字段logged\u in
:如果它等于None
,则他们可以登录;否则他们就无法进入。这类似于您检查与LoginForm()
中的用户名匹配的那一行,但您检查的是logged_in
功能。同意@JakeJackson,但是您需要确保您的注销逻辑是防弹的,以防止锁定。例如,如果用户从未真正单击过注销按钮。是的,你是对的。这基本上是一种比赛状态,如果不适当适应,会有很多问题。