正如标题所说,我正在尝试将Flask与PHP应用程序一起运行。
它们都在Windows平台上的Apache 2.4下运行。对于Flask,我使用的是wsgi_module。
Flask应用程序实际上是一个API。 PHP应用程序控制用户登录,因此用户可以访问API。请记住,我不能放弃使用PHP应用程序,因为它更多地控制了日志记录功能[开发票,访问日志等]。
流程是:
我知道在第2步和第3步之间,PHP必须与Flask共享一个会话变量-corame [user id],以便检查用户是否已登录。
无论我尝试什么都失败了。我无法将PHP会话变量传递给Flask。
我知道我无法将PHP变量传递给Flask,但我不确定。
有没有人尝试过类似的东西?
我应该对上述设置实施哪种用户登录策略?
答案 0 :(得分:2)
我不确定这是您正在寻找的答案,但我不会尝试从PHP获取Flask API访问会话数据。会话和API不能很好地结合在一起,设计良好的API不需要会话,而是100%无状态。
我要提出的建议假设PHP和Flask都可以访问用户数据库。当用户登录PHP应用程序时,为用户生成API令牌。这可以是一个随机的字符序列,一个uuid,无论你想要什么,只要它是唯一的。如果您愿意,可以将令牌写入用户数据库以及到期日期。登录过程应该将该令牌传递回客户端(当然使用https://。)
当客户端需要进行API调用时,它必须在每个请求中发送该令牌。例如,您可以将其包含在Authorization
标题中,也可以使用自定义标题。 Flask API获取令牌并在用户数据库中搜索它。如果找不到令牌,则返回401.如果找到令牌,它现在知道用户是谁,而不必与PHP共享会话。对于API端点,您将从每个请求的令牌中查找用户。
希望这有帮助!