session - cakephp 多个应用程序具有相同的蛋糕库和共享 session

标签 session cakephp authentication

我正在使用 cakephp 运行应用程序作为我们公司的公共(public)网站,老板要求我为他们创建另一个应用程序,以使用相同的用户帐户及其权限来管理办公室事件。

在本地开发 PC 上,该项目位于 D:/wamp/www/blackstone
我刚刚复制了 D:/wamp/www/blackstone/app 并将其粘贴到同一位置,并将其命名为 office

应用程序文件夹路径是:

D:/wamp/www/blackstone/app
D:/wamp/www/blackstone/office

我已在“office”appController 中提交了“isAutorized”、“Auth”和“Session”组件,以防止检查登录。正在使用以下 URL 访问应用程序:

localhost/blackstone
localhost/blackstone/office

我想访问 officeblackstone 的“ session ”。我还没有找到解决办法。

目前我在 blackstone 中有 core.php 为:

Configure::write('Session', array(
        'defaults' => 'cake',
        'cookie' => 'my_app',
        'timeout'  => 500,  // 8 hours + 20 min, 
        'cookie_path' => '/',
        )
    );

core.phpoffice 应用程序中为:

Configure::write('Session', array(
        'defaults' => 'cake',
        'cookie' => 'my_app',
        'timeout'  => 500,  // 8 hours + 20 min, 
        'cookie_path' => '../',
        )
    );

这导致了更多的变化。

我可以尝试改变什么?

最佳答案

在调试此类内容时,最好尝试设置最简单、最愚蠢、最不容易出错的参数,以确保您可以首先使其正常工作 - 然后慢慢增加您想要在生产中使用的复杂性(例如,更安全)以准确地了解哪里可能会出现问题。

首先,确保在 core.php 中确保在两个应用程序中设置 Security.level = "low"。否则,应用程序会进行 session 引用检查(如果“中”),甚至重新生成 session ID(如果“高”),这肯定会阻止共享。

我看到的两个复杂点是“defaults”=>“cake”和相应的“cookie_path”值。 As the CakePHP manual says ,将其设置为“cake”会将服务器 session cookie 放置在与该应用程序相关的目录中。

您应该注释掉 cookie_path 行,然后设置 'defaults' => 'php'。这样您就知道 PHP 至少会将 session cookie 放置在您的开发计算机上的一个固定目录中。

如果您必须切换回“cake”,请确保您的“cookie_path”参数实际上将服务器 cookie 文件写入单个共享目录中。当您在浏览器中访问这两个应用程序时,实际查看写入预期目录的文件。如果两个应用程序将 session cookie 写入不同的目录,那么您必须修复 cookie_path 参数以匹配,因为应用程序显然没有共享。另外,根据您的 CakePHP 版本,您可能需要按以下方式编写此参数,而不是如何使用它才能使其生效: 'ini' => array('session.cookie_path' => '/app/目录')

最后,仔细检查站点域、“cookie 路径”和所有其他 session cookie 参数是否完全相同。 (您可以在 Chrome Web 检查器中检查客户端 Cake session Cookie。)如果有任何不匹配的情况,则应用程序将无法共享。

关于session - cakephp 多个应用程序具有相同的蛋糕库和共享 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31892178/

相关文章:

cakephp - CakePHP 3.0.0 中的输入包装 div 类

javascript - AngularJS |在加载之前处理路由

php - 如何从 laravel 中的 session 数组中删除一个项目

asp.net - 同步不同子域(asp.net)中的cookie和 session

php - Zend Framework 2 - 如何对自己的 session 服务进行单元测试?

Android AWS Amplify - 库尝试调用用户回调两次,预计只有一次

android - 为什么我的登录屏幕不工作

node.js - 对 Node/Express 应用程序使用 connect-flash 时无法获取要渲染的 Flash 消息

php - 仅查找连接条件匹配的 parent

CakePHP 3 - 访问查询对象的参数