我已经问了similar question,但我在CakePHP中再次遇到问题。
问题是:当有人收到内部链接的电子邮件并点击此链接时,会话就会死亡。
如果用户在点击电子邮件的链接后登录了该网站,他的会话就会死亡。
如果用户已登录该网站并复制该电子邮件的链接而不是点击该链接,则一切正常。
我认为我需要一些神奇的解决方案才能最终一劳永逸地解决这个问题。
答案 0 :(得分:0)
如果用户在点击该字母的链接后登录该网站,他的会话就会死亡
这可能是因为点击该链接会导致用户使用的任何浏览器启动新的浏览器实例。处理方式因浏览器而异。
我会保持这种行为。解决这个问题非常复杂,可能会在此过程中出现安全问题。
答案 1 :(得分:0)
Security.level
中你有config/core.php
“高”吗?如果是这样,请尝试“中”或“低”。
此外,请检查电子邮件客户端是否未打开与启动会话的浏览器不同的浏览器。
答案 2 :(得分:0)
当CakePHP'Security.level'设置为'high'或'medium'时,CakePHP将PHP session.referer_check设置为您的站点主机名。
但是,当用户单击电子邮件客户端内的链接时,引用者检查测试失败,会话被标记为无效。
您需要做的是:
1)将CakePHP'Security.level'设置为'low'
OR
2)为CakePHP提供自定义会话配置,如here所示,将'session.referer_check'设置为空字符串,这样:
ini_set('session.referer_check', '');