Не знаю, как обрабатывать несколько пользователей одновременно на сайте python3 flask - PullRequest
0 голосов
/ 12 января 2020

Я недавно создал сайт с системой входа в систему, но он работает, только если в данный момент на сайте присутствует только один пользователь. Например, если бы я должен был войти в систему, а кто-то другой должен был бы получить доступ к моему веб-сайту, они автоматически войдут в мою учетную запись. Как я должен сделать каждый сеанс пользователя отдельным?

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')

На главной странице есть кнопка входа в систему, и когда пользователь входит в систему, он перенаправляет их на домашнюю страницу и устанавливает для входа значение True. Однако это влияет на каждого пользователя на сайте и регистрирует их всех в одной учетной записи.

1 Ответ

0 голосов
/ 23 января 2020

Подумайте о том, что вы делаете. Это тонкая ошибка, которую легко не заметить. Вы устанавливаете значения «logged» и «username», когда пользователь входит в систему. Эти значения хранятся в памяти на сервере. Поэтому, когда кто-то получает доступ к вашему веб-сайту, он входит в ту же учетную запись.

Я не уверен, читали ли вы, что HTTP-запросы не сохраняют состояние. Отсутствие состояния означает, что для любого запроса, полученного сервером, сервер ничего не помнит из предыдущего запроса. В Википедии есть хорошая статья на эту тему.

То, что вы хотите сделать, - это использовать куки или какой-то механизм сеанса для установления sh аутентификации между пользователями и сервером. Посмотрите этот учебник для получения дополнительной информации о том, как это сделать с Flask.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...