让网站用户访问 api flask
Let website user access api flask
我有两个网络应用程序。一个是网站。另一个是API。两者都是使用烧瓶建造的。他们使用不同的身份验证方法。
该网站使用了 flask-login 库。具体来说,如果表单提供的 user.check_password
为真,则使用 login_user
。
api 使用加密签名令牌。 api 由移动应用程序使用(例如 ios)。这些应用程序向 /api/login
和 POST 调用您在网站上期望的相同用户名和密码。 api 然后是 returns 一个令牌,应用程序存储该令牌并在将来用于身份验证。令牌是使用 itsdangerous 库生成的。具体来说,它是使用 TimedJSONWebSignatureSerializer
.
创建的
我现在遇到一个令人困惑的问题,我们的网站页面之一需要访问我们的 api。当然 api 将不允许访问,因为用户没有正确生成的身份验证令牌。我可以控制代码的每一部分,但我不确定在这种情况下最优雅的解决方案是什么。我应该停止使用其中一种身份验证机制吗?我应该以某种方式为网站用户存储 api 身份验证令牌吗?
如有任何建议,我们将不胜感激。
更新
当我思考这个问题时,我突然想到我可以更改 login_user 使用的令牌生成过程。如果 login_user 使用与 api 相同的令牌,那么大概我可以在用户需要通过网站发出 api 请求时从会话中获取令牌。尚不清楚这是否疯狂。
我最终采用的方法是将这两种方法结合起来。 user_logged_in
在用户登录时触发。我使用该方法生成一个 api-token 并在登录时将其存储在用户对象中。然后,当用户想要进行 api 调用时,只需从用户对象中检索令牌即可。
我不确定这是否是最佳做法,但它似乎运行良好。
我有两个网络应用程序。一个是网站。另一个是API。两者都是使用烧瓶建造的。他们使用不同的身份验证方法。
该网站使用了 flask-login 库。具体来说,如果表单提供的 user.check_password
为真,则使用 login_user
。
api 使用加密签名令牌。 api 由移动应用程序使用(例如 ios)。这些应用程序向 /api/login
和 POST 调用您在网站上期望的相同用户名和密码。 api 然后是 returns 一个令牌,应用程序存储该令牌并在将来用于身份验证。令牌是使用 itsdangerous 库生成的。具体来说,它是使用 TimedJSONWebSignatureSerializer
.
我现在遇到一个令人困惑的问题,我们的网站页面之一需要访问我们的 api。当然 api 将不允许访问,因为用户没有正确生成的身份验证令牌。我可以控制代码的每一部分,但我不确定在这种情况下最优雅的解决方案是什么。我应该停止使用其中一种身份验证机制吗?我应该以某种方式为网站用户存储 api 身份验证令牌吗?
如有任何建议,我们将不胜感激。
更新 当我思考这个问题时,我突然想到我可以更改 login_user 使用的令牌生成过程。如果 login_user 使用与 api 相同的令牌,那么大概我可以在用户需要通过网站发出 api 请求时从会话中获取令牌。尚不清楚这是否疯狂。
我最终采用的方法是将这两种方法结合起来。 user_logged_in
在用户登录时触发。我使用该方法生成一个 api-token 并在登录时将其存储在用户对象中。然后,当用户想要进行 api 调用时,只需从用户对象中检索令牌即可。
我不确定这是否是最佳做法,但它似乎运行良好。