Как сделать логин на остальные API с помощью flask -security, используя запросы - PullRequest
0 голосов
/ 23 января 2020

Я отключил CSRF, но не могу войти в REST API, используя Flask -Безопасность с авторизацией на основе ролей, с локального интерфейсного сервера. Я делаю вход в систему, но, по-моему, файлы cookie не сохраняются в запросе, поэтому я продолжаю получать страницу входа на сервере переднего плана. Это код, который я использую:

 payload = {'username': request.form['username'], 'password': request.form['password']}
    with requests.Session() as s:
        r = s.post('http://localhost:5002/login', data=payload)
        print(s.cookies)
        if r.ok:
            r2 = s.get('http://localhost:5002/protected', cookies=s.cookies)

Есть ли способ сохранить сеанс для клиента переднего плана, который вошел в систему, чтобы показать защищенный контент?

1 Ответ

1 голос
/ 24 января 2020

LoginForm Flask -Security не принимает 'username' - поле называется 'email'. Теперь - вы МОЖЕТЕ отправить имя пользователя в этом поле, и если вы правильно настроили SECURITY_IDENTITY_ATTRIBUTES - он должен найти столбец «username» в БД.

Второе - я хочу указать, что только потому, что вы использование запросов не означает, что вы отправляете JSON - фактически вы отправляете форму ввода. Так что Flask -Безопасность всегда отвечает формой - вы в основном никогда не увидите ничего, кроме 200 - с телом ответа, содержащим «форму» с различными сообщениями об ошибках.

Итак - 2 вещи - если вы хотите REST - сделайте это - новые версии запросов принимают аргумент json = и будут действовать правильно. Если вы сделаете это - вы начнете получать 400 ответов, я верю.

...