首页 > 解决方案 > 有没有办法在不使用 flask-login 来管理用户的情况下保护 Flask 中的登录内容?

问题描述

我正在尝试在 Flask\python 中建立一个 POC 网站来使用一些 API。我做了一个简单的登录页面,重定向到 /loggedin。但是 /loggedin 也可以通过编写https://mysite/loggedin.html 来访问。有没有一种简单的方法可以防止这种情况,而不涉及使用诸如烧瓶登录之类的东西?我不想花时间建立 SQL 用户群等,因为我将是该应用程序的唯一用户。

app = Flask(__name__)


@app.route("/")
    def home():
return render_template("home.html")

@app.route("/loggedin")
    def innsiden():
return render_template("loggedin.html")

@app.route("/login", methods=['GET', 'POST'])
    def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'admin':
            error = 'Invalid Credentials. Please try again.'
    else:
        return redirect(url_for('loggedin'))
    return render_template('login.html', error=error)

标签: pythonflaskflask-login

解决方案


在烧瓶中,您可以维护服务器上的“会话”信息。一个简单的方法可能是

  1. 当用户使用正确的密码登录时,将他们的用户名添加到会话数据中
  2. 当登录用户访问“安全”页面时,flask 会检查他们的用户 ID 是否在 sesson dataif 'username' in session:中。如果是,则将它们定向到正确的页面,否则将它们定向到登录页面
  3. 当用户注销时,他们的用户名将从列表中删除。

此配方的一个版本在https://www.tutorialspoint.com/flask/flask_sessions.htm进行了描述


推荐阅读