Использование Flask-Security для аутентификации REST API
Я использую Фляга-Безопасность для создания веб-приложения с общедоступным API REST. Я пытаюсь выяснить, как добавить регистрацию пользователя и войти в систему, используя только вызовы REST.
Создать пользователя с помощью user_datastore.create_user
. Но как я могу войти в систему пользователя, используя вызов REST?
Если flask_security.utils.login_user
взял имя пользователя+пароль или токен в качестве аргумента, это было бы легко, но вместо этого он берет объект пользователя?
В документации показано, как зарегистрироваться и войти в систему с помощью форм и представлений, но я необходимо иметь возможность зарегистрироваться и войти в систему с устройства IOS (используя RESTkit).
2 ответов
вы либо хотите использовать flask_security.decorators.auth_token_required
вместе с SECURITY_TOKEN_AUTHENTICATION_KEY
или SECURITY_TOKEN_AUTHENTICATION_HEADER
(в зависимости от того, хотите ли вы передать маркер в URL или в заголовке) или вы можете переопределить flask_security.core.UserMixin.get_auth_token
для User
класс и фляжка-безопасность сделает правильную вещь.
[написание ответа, так как у меня недостаточно полномочий, чтобы прокомментировать ответ, предоставленный Шоном Виейрой]
Я посмотрел немного колбы-код безопасности-он использует для этого LoginManager Flask-Login. Flask-Login в свою очередь ожидает, что пользователь определит token_loader (а также реализует get_auth_token в классе User)
обеспечивает ли Flask-Security функциональность token_loader по умолчанию ? В противном случае-это то же самое, что и Flask-Login
изменить: Оказывается Фляжка-безопасность работает отлично. Мне не нужно писать свой собственный token_loader. У меня был код безопасности в отдельном файле, и именно так "магия" сломалась. Я вернул код безопасности в myapp/init.py-и документированный код "работает"
редактирование 2:
Ссылаясь на ответ, предоставленный Шоном выше. Я не думаю, что это одно или другое. Один должны использовать auth_token_required
оформителя.
Переопределение get_auth_token
на User
класс является необязательным, если вы хотите другую реализацию для генерации токенов (я думаю)
Переопределение get_auth_token
на User
класс недостаточен.