不知道如何在python3 flask网站上同时处理多个用户

2024-03-28 20:45:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近创建了一个带有登录系统的网站,但它只在只有一个用户同时在网站上时才起作用。例如,如果我登录,其他人访问我的网站,他们将自动登录到我的帐户。我如何使每个用户会话分离

logged = False
@app.route('/', methods=['POST', 'GET'])
def home():
    global logged
    if request.method == 'POST':
        logged = False
        return redirect(url_for('home'))
    else:
        if not logged:
            return render_template('home.html')
        elif logged:
            return render_template('logged.html')

@app.route('/login', methods=['POST', 'GET'])
def login():
    global logged, username
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        con = sqlite3.connect('users.db')
        c = con.cursor()
        user = False

        if c.execute("SELECT * FROM users WHERE username = ?", [username]):
            for row in c.execute("SELECT * FROM users WHERE username = ?", [username]):
                user = row

        if user:
            if user[1] == password:
                logged = True
            con.commit()
            con.close()
            if logged:
                return redirect(url_for('home'))
            else:
                return render_template('loginerror.html')
        else:
            return render_template('loginerror.html')
    else:
        return render_template('login.html')

在主页上,有一个登录按钮,当用户登录时,它会将他们重定向到主页并将logged设置为True。但是,这会影响网站上的每个用户,并将他们全部登录到同一个帐户


Tags: 用户homereturnif网站requesthtmlusername
1条回答
网友
1楼 · 发布于 2024-03-28 20:45:02

想想你在做什么。这是一个微妙的错误,很容易被忽视。当用户登录时,您正在设置“logged”和“username”的值。这些值存储在服务器的内存中。因此,当其他人访问您的网站时,他们将登录到同一帐户

我不确定您是否读过HTTP请求是无状态的。无状态意味着对于服务器接收到的任何请求,服务器都不记得以前请求中的任何内容Wikipedia有一篇关于这方面的好文章

您要做的是使用cookie或某种会话机制在用户和服务器之间建立身份验证。查看此tutorial了解有关如何使用烧瓶执行此操作的更多信息

相关问题 更多 >