Cakephp auth组件有两个模型会话

Jon*_*son 13 authentication cookies session cakephp cakephp-2.0

我有两个在同一个数据库上运行的cakephp2应用程序,但是相应地具有不同的Auth表和不同的$ this-> Auth-> userModel值.身份验证效果很好,一个应用的用户无法登录其他应用.

但是,当应用程序使用相同的CAKEPHP会话cookie时,会发生以下情况:当应用程序"one"的用户登录时,它可以访问应用程序"两个"中的任何受Auth保护的操作!

我可能会使用不同的用户角色和cookie名称.但是,为什么Auth组件在检查会话时忽略了Auth-> userModel设置?有没有办法将其配置为在这种情况下正常工作?

在此先感谢您的任何建议.

pix*_*tik 11

如果没有另外配置,AuthComponent会将经过身份验证的用户记录写入Auth.UserCakePHP 2中的会话密钥.但是可以更改:

AuthComponent :: sessionKey

存储当前用户记录的会话密钥名称.如果未指定,则为"Auth.User".

(在CakePHP 1.3 ,这是不同的:Auth.{$userModel name})

因此,如果您的应用共享会话,他们会这样做,如果Cookie名称和Security.salt匹配,则会共享已登录的记录.

有两种可能性来解决这个问题:

分开登录

只需AuthComponent::sessionKey为两个型号设置不同的颜色即可.这将允许他们单独保留登录用户

分开会议

为两个应用程序配置不同的Cookie名称和Salt,因此它们的会话不能相互覆盖.这可能是更清晰的解决方案,因为它还涵盖了其他会话密钥被重复使用的风险.