Skip to main content
 首页 » 编程设计

php之与 PHP 一起运行 Flask [分享会]

2025年05月04日25xiaohuochai

正如标题所说,我正在尝试将 Flask 与 PHP 应用程序一起运行。

两者都运行在Windows平台的Apache 2.4下。对于 Flask,我使用的是 wsgi_module。

Flask 应用程序实际上是一个 API。 PHP 应用程序控制用户登录,因此用户可以访问 API。请记住,我不能放弃使用 PHP 应用程序,因为它控制的不仅仅是日志记录功能 [发票、访问日志等]。

流程是:

  1. 用户通过 PHP 应用登录
  2. PHP 将用户数据存储到数据库 [用户 ID 和指示用户是否登录的标志]
  3. 用户向 Flask API 发出请求
  4. Flask 检查用户数据是否在数据库中:如果不在,则重定向到 PHP 登录页面,否则让用户使用 Flask API。

我知道在第 2 步和第 3 步之间,PHP 必须与 Flask 共享 session 变量 cookie [用户 ID],以便 Flask 应用检查用户是否已登录。

无论我尝试什么都失败了。我无法将 PHP session 变量传递给 Flask。

我知道我不能将 PHP 变量传递给 Flask,但我不确定。

有人试过类似的东西吗?

我应该对上述设置实现什么样的用户登录策略?

请您参考如下方法:

我不确定这是您正在寻找的答案,但我不会尝试让 Flask API 从 PHP 访问 session 数据。 session 和 API 不能很好地结合在一起,一个设计良好的 API 不需要 session ,而是 100% 无状态的。

我要提议的假设是 PHP 和 Flask 都可以访问用户数据库。当用户登录到 PHP 应用程序时,为用户生成一个 API token 。这可以是一个随机的字符序列,一个 uuid,任何你想要的,只要它是唯一的。将 token 写入用户数据库,如果需要,还可以附上到期日期。登录过程应该将该 token 传递回客户端(当然使用 https://)。

当客户端需要进行 API 调用时,它必须在每个请求中发送该 token 。例如,您可以将其包含在 Authorization header 中,也可以使用自定义 header 。 Flask API 获取 token 并在用户数据库中搜索它。如果它没有找到 token ,它返回 401。如果找到 token ,它现在知道用户是谁,而不必与 PHP 共享 session 。对于 API 端点,您将从每个请求的 token 中查找用户。

希望这对您有所帮助!