【发布时间】:2011-09-14 09:23:12
【问题描述】:
我已经问过similar question,但是我在 CakePHP 中的会话又遇到了问题。
问题是:当有人收到一封包含链接的电子邮件并单击此链接时,会话就会终止。
如果用户在单击电子邮件链接后登录网站,他的会话将终止。
如果用户登录网站并复制电子邮件的链接而不是点击它,那么一切正常。
我想我需要一些神奇的解决方案来最终一劳永逸地解决这个问题。
【问题讨论】:
我已经问过similar question,但是我在 CakePHP 中的会话又遇到了问题。
问题是:当有人收到一封包含链接的电子邮件并单击此链接时,会话就会终止。
如果用户在单击电子邮件链接后登录网站,他的会话将终止。
如果用户登录网站并复制电子邮件的链接而不是点击它,那么一切正常。
我想我需要一些神奇的解决方案来最终一劳永逸地解决这个问题。
【问题讨论】:
如果用户在点击信件的链接后登录网站,他的会话就会终止
这可能是因为单击该链接会导致用户使用的任何浏览器启动一个新的浏览器实例。处理方式因浏览器而异。
我会保持这种行为不变。解决此问题将非常复杂,并且可能会在此过程中引发安全问题。
【讨论】:
config/core.php 中的“high”是否有 Security.level?如果是这样,请尝试使用“中”或“低”。
另外,请检查电子邮件客户端打开的浏览器是否与启动会话的浏览器不同。
【讨论】:
当 CakePHP 的“Security.level”设置为“high”或“medium”时,CakePHP 会将 PHP session.referer_check 设置为您的站点主机名。
但是,当用户单击电子邮件客户端内的链接时,引用者检查测试失败并且会话被标记为无效。
你需要做的是:
1) 将 CakePHP 'Security.level' 设置为 'low'
或
2) 为CakePHP提供自定义会话配置,如图here,将'session.referer_check'设置为空字符串,这样:
ini_set('session.referer_check', '');
【讨论】: