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