我正在将cakephp作为我们公司的公共网站运行应用程序,老板让我为他们创建另一个应用程序,使用相同的用户帐户及其权限来管理办公室内的活动。
在本地开发PC上,该项目位于D:/wamp/www/blackstone
我刚刚复制了D:/wamp/www/blackstone/app
并将其粘贴到命名为office
的相同位置。
app文件夹路径为:
D:/wamp/www/blackstone/app
D:/wamp/www/blackstone/office
我承诺' isAutorized',' Auth' &安培; '会话'办公室中的组件' appController防止检查登录。正在使用以下网址访问应用:
localhost/blackstone
localhost/blackstone/office
我想访问会话' blackstone
中的office
。我还没有找到解决方案。
目前我在core.php
中blackstone
作为:
Configure::write('Session', array(
'defaults' => 'cake',
'cookie' => 'my_app',
'timeout' => 500, // 8 hours + 20 min,
'cookie_path' => '/',
)
);
在core.php
app中 office
:
Configure::write('Session', array(
'defaults' => 'cake',
'cookie' => 'my_app',
'timeout' => 500, // 8 hours + 20 min,
'cookie_path' => '../',
)
);
这导致了更多的变化。
我可以尝试和改变什么?
答案 0 :(得分:1)
在调试这样的事情时,最好尝试设置最不容易出错的最简单,最愚蠢的参数,以确保您能够首先使用它 - 然后慢慢增加您希望在生产中使用的复杂性(例如,更安全),以准确地看到这可能会破坏的地方。
首先,确保在core.php中确保设置Security.level =" low" - 在两个应用程序中。否则,应用程序会进行会话引荐来检查(如果"中等")或甚至重新生成会话ID(如果"高"),这肯定会阻止共享。
我看到的两个复杂点是'默认' => '蛋糕'以及相应的cookie_path'值。 As the CakePHP manual says,将此设置为' cake'将服务器会话cookie放在相对于该应用程序的目录中。
您应该注释掉cookie_path行,然后设置'默认值' => ' PHP&#39 ;.通过这种方式,您至少知道PHP会将会话cookie放在开发计算机上的一个固定目录中。
如果您必须切换回' cake',请确保您的Cookie_path'参数实际上是将服务器cookie文件写入单个共享目录中。实际上,当您在浏览器中访问这两个应用程序时,请查看正在写入预期目录的文件。如果两个应用程序正在将会话cookie写入不同的目录,那么您必须修复您的cookie_path参数以匹配,因为应用程序显然不会共享。此外,根据您的CakePHP版本,您可能需要将此参数编写为以下内容,而不是如何使其生效以使其生效:' ini' =>数组(' session.cookie_path' =>' / app / dir')
最后,仔细检查站点域," cookie路径"以及每个其他会话cookie参数是否完全相同。 (您可以在Chrome网络检查器中检查客户端Cake会话cookie。)如果有任何不匹配,则应用程序将无法共享。