Использование 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 класс недостаточен.