Python Flask "Неверные учетные данные" - PullRequest
0 голосов
/ 19 апреля 2020

Я новичок в Flask, изучая его из обучающего видео. Я пытаюсь аутентифицироваться и получить токен доступа. Я создал пользовательский класс, который находится в user.py :


    class User:
    def __init__(self, _id, username, password):
        self.id = _id,
        self.username = username,
        self.password = password


в моем security.py :


from werkzeug.security import safe_str_cmp
from user import User

users = [
    User(1, 'user1', 'abcxyz'),
]

username_table = {u.username: u for u in users}
userid_table = {u.id: u for u in users}

def authenticate(username, password):
    user = username_table.get(username, None)
    print(username) # user1
    print(password) # abcxyz
    print(username_table) #{('user1',): <user.User object at 0x000001AD37543358>}
    print(user) # None
    if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')):
        return user

def identity(payload):
    user_id = payload['identity']
    return userid_table.get(user_id, None)

Как вы видно, что я пытался отладить с распечаткой всего. Внутри функции аутентификации я успешно получил имя пользователя и пароль из запроса. Но в результате переменная user равна None. Похоже, .get метод не работает, и это вызывает ошибку, но я не могу понять, почему я получаю None там. Я показал результаты перед печать функции

1 Ответ

2 голосов
/ 20 апреля 2020

Я думаю, что в вашей программе есть опечатка. Удалите , после имени пользователя в __init__ класса User. Это синтаксически правильный способ создания кортежа с одним элементом, который вам не нужен.

>>> tuple_with_single_element = "python",
>>> tuple_with_single_element
... ('python',)
>>> python_string = "python"
>>> python_string
... 'python'

...