我正在使用Flask-Security构建一个具有公共 REST API 的 Web 应用程序。我试图弄清楚如何仅使用 REST 调用添加用户注册和登录。使用user_datastore.create_user
. 但是我怎样才能使用 REST 调用登录用户呢?
如果flask_security.utils.login_user
将用户名+密码或令牌作为参数,这很容易,但它需要一个用户对象吗?该文档显示了如何使用表单和视图注册和登录,但我需要能够从 IOS 设备注册和登录(使用 RESTkit)。
2 回答
您要么想要flask_security.decorators.auth_token_required
与SECURITY_TOKEN_AUTHENTICATION_KEY
or一起使用SECURITY_TOKEN_AUTHENTICATION_HEADER
(取决于您是要在 URL 中还是在标头中传递令牌),或者您可以flask_security.core.UserMixin.get_auth_token
为您的User
类覆盖,Flask-Security 会做正确的事情。
[写一个答案,因为我没有足够的凭据来评论 Sean Vieira 提供的答案]
我看了一些 Flask-Security 代码——它为此使用了 Flask-Login 的 LoginManager。Flask-Login 反过来期望用户定义 token_loader (以及在 User 类中实现 get_auth_token )
Flask-Security 是否提供“默认” token_loader 功能?否则 - 它与 Flask-Login 相同
编辑:事实证明 Flask-Security 工作得很好。我不需要编写自己的 token_loader。我在一个单独的文件中有安全代码,这就是“魔法”的破坏方式。我将安全代码带回了 myapp/ init .py - 并记录了代码“有效”
编辑2:参考上面肖恩提供的答案。我不认为这是其中之一。必须使用auth_token_required
装饰器。get_auth_token
在类中覆盖User
是可选的,以防您想要不同的令牌生成实现(我认为)get_auth_token
在User
类中覆盖是不够的。