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

时间:2015-08-08 10:35:28

标签: session cakephp authentication

我正在将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.phpblackstone作为:

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' => '../',
        )
    );

这导致了更多的变化。

我可以尝试和改变什么?

1 个答案:

答案 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。)如果有任何不匹配,则应用程序将无法共享。