7

我正在使用Flask-Security构建一个具有公共 REST API 的 Web 应用程序。我试图弄清楚如何仅使用 REST 调用添加用户注册和登录。使用user_datastore.create_user. 但是我怎样才能使用 REST 调用登录用户呢?
如果flask_security.utils.login_user将用户名+密码或令牌作为参数,这很容易,但它需要一个用户对象吗?该文档显示了如何使用表单和视图注册和登录,但我需要能够从 IOS 设备注册和登录(使用 RESTkit)。

4

2 回答 2

6

您要么想要flask_security.decorators.auth_token_requiredSECURITY_TOKEN_AUTHENTICATION_KEYor一起使用SECURITY_TOKEN_AUTHENTICATION_HEADER(取决于您是要在 URL 中还是在标头中传递令牌),或者您可以flask_security.core.UserMixin.get_auth_token为您的User类覆盖,Flask-Security 会做正确的事情。

于 2014-05-29T22:04:50.800 回答
2

[写一个答案,因为我没有足够的凭据来评论 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_tokenUser类中覆盖是不够的。

于 2015-01-12T12:56:35.380 回答