CakePHP 3 - 通过非蛋糕子域

时间:2017-05-08 11:01:12

标签: php .htaccess session authentication cakephp

我正在CakePHP 3中重建Web应用程序,并计划更改应用程序的结构。目前,架构如下 - 并且没有一个是用Cake编写的。

https://app.example.com处有一个登录页面,用于在成功登录时设置PHP会话变量。然后所有应用程序都在子目录中,例如

https://app.example.com/application-1
https://app.example.com/application-2
https://app.example.com/application-3

每个子目录都有一个脚本,用于检查是否设置了适当的会话变量,否则重定向到登录页面,例如:尝试在未登录的情况下访问https://app.example.com/application-1会将用户发送到https://app.example.com/

我打算在CakePHP 3中重建其中一个应用程序https://app.example.com/application-2,并在单独的子域(例如https://cake.example.com/)上执行此操作。

我想要做的是允许用户仍然通过https://app.example.com登录,然后使用https://cake.example.com/,如果他们已成功通过身份验证。

我计划允许我的PHP会话跨多个子域工作 - 按照Allow php sessions to carry over to subdomains

我不确定这在Cake 3中是如何工作的。我的一个想法是设置https://cake.example.com/ 而不启用任何Cake的Auth功能。然后我将使用AppController::beforeFilter()来检查会话变量。如果设置得当,请允许用户使用任何Cake Controller方法。如果没有,请将它们重定向到可以登录的https://app.example.com

我正在寻找一些关于是否有更好的方法来做到这一点的建议,如果这是安全的?我知道这样做本质上就像使用 no 身份验证开发Cake应用程序,并且只依赖于beforeFilter()中正在读取的会话变量。

https://app.example.com处的登录脚本还会写入数据库,其中包含用户ID,IP,用户代理字符串和日期/时间等内容。我可以从我的Cake应用程序访问这个数据库,但是在每个请求中查询这个数据库的想法似乎也是错误的。

值得一提的是https://cake.example.com 不能拥有自己的登录页面,即使它连接到现有用户数据库以查找凭据也是如此。这是因为用户通过https://app.example.com登录,然后充当其应用程序的仪表板。基本上,当他们到达https://cake.example.com时,他们必须进行身份验证,或者发送回现有的登录页面。

0 个答案:

没有答案