использование фляги auth.verify_password с сеансом - PullRequest
0 голосов
/ 07 февраля 2019

Я немного изо всех сил пытаюсь заставить аутентификацию работать должным образом.Я контролирую поведение при входе через API вместо веб-приложения.Для этого я использую flask session и HTTPBasicAuth().После того, как пользователь входит в систему и пока он не выходит из системы, я не хочу, чтобы он повторно входил в систему (или) отправлял аутентификацию для каждого запроса к API.Для этого я использую session['username'].

Мой код для auth.verify_password ниже.

    @auth.verify_password
    def verify_password(username, password):
        if 'username' in session:
            return True
        else:
            where_col = "username"
            if '@' in parseaddr('username')[1]:
                where_col = "email"

            conn = mysql.connect()
            cur = conn.cursor()
            sql = "SELECT email, pwd FROM users_table WHERE {}=%s".format(where_col)
            cur.execute(sql, (username))
            row = cur.fetchone()
            cur.close()
            conn.close()
            if not row:
                print "Invalid user"
                return False
            session['username'] = username
            return check_password_hash(row[1], password)

Now, after the login is complete, I want to get some other product data for which I will check using the `auth.login_required` decorator

@app.route('/products', methods=['GET', 'POST'])
@auth.login_requied
def get_products():
    conn = mysql.connect()
    cur = conn.cursor()
    sql = "select * from all_products"
    row = cur.fetchall()
    cur.close()
    conn.close()
    return row

@app.route('/logout', methods=['GET', 'POST'])
@auth.login_requied
def logout():
    session.pop(auth.username())

В следующий раз, когда я позвоню get_products, я не хочу передаватьauth к заголовку запроса.Приведенный выше код не работает, когда я это делаю.Я чувствую, что какой-то очень маленький код где-то отсутствует (или), что мой подход совершенно неверенsession['username'], похоже, не сохраняется.Он должен проходить через подход входа каждый раз, тогда как моя цель - пропустить вход до тех пор, пока пользователь не выйдет из системы.Оцените любые предложения здесь.

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