我的CakePHP应用程序出现问题.这似乎只发生在IE中,并且仅在某些计算机上发生.虽然它在计算机上是一致的.
问题一: 用户已登录并在页面https://example.com/users/view上点击退出.用户被重定向到http://example.com并且似乎已注销,直到用户访问另一个https页面并且他们仍然登录.他们可以根据需要单击注销,但他们始终登录https并且只能在http上注销.
问题二: 用户登录https://example.com/users/signin,他们会被重定向到http://example.com,现在似乎已登录.用户访问https://example.com/admin/幻灯片,但现在还不知道,但现在已注销,点击任何其他页面(或只是刷新当前页面)将要求他们再次登录.
我不知道是怎么回事.我已经阅读并尝试了在这两个类似问题上描述的解决方案:从ssl转移到非ssl时会话不保存,而在IE中不更新/覆盖Cookie但我仍然遇到同样的问题.
到目前为止,我注意到的唯一线索(并且我不知道这是否意味着什么)就是当我在HTTP页面上调试时$_SESSION,$this->Session->read()总是只有$ this-> Session-> read()返回一个值.在HTTPS页面上,有些ALWAYS总是为两者返回相同的值,其他ALWAYS只返回$ this-> Session-> read()的值.
例如,http://example.com和https://example.com/users永远不会看到$ _SESSION,https://example.com/carts总是会看到$ _SESSION.我不确定,但我在想,也许安全页面可能会看到它,因为有些可能不会出现问题,但是当我检查代码时,我看到没有区别,这表明为什么一个人做,一个人没有吨.
此外,如果我$this->Session->destroy()在AppController中添加到beforeFilter,那么所有页面甚至HTTP都可以看到$ _SESSION.我实际上并没有在我的应用程序中使用$ _SESSION,我只是觉得这可能是一个错误的线索.
UPDATE
我接受了Gustav Bertram的建议并查看了用户代理字符串.我在没有问题的计算机上将用户代理字符串与IE上的IE进行了比较.它们是相同的,除了有问题的用户代理字符串中有"google chrome frame".我从该计算机上卸载了Google Chrome Frame,重新启动,再次尝试,问题似乎已经解决了.
如果这是真正的原因,那么简单的解决方案就是让用户卸载Chrome框架.但是我想知道是否有一个解决方案可以让他们安装镀铬框架并且仍然有效.
我开发了一个cakephp网站,应该对所有页面使用ssl.它按预期工作,除非我在控制器中使用重定向,它重定向到http://subdomain.domain.com而不是https://subdomain.domain.com/controller/action.
我通过为端口80创建指向cakephp应用程序的虚拟主机并在.htaccess中添加了这些重写规则来解决这个问题.
RewriteCond%{HTTPS} off RewriteRule(.*)https://% {HTTP_HOST}%{REQUEST_URI} [L]
这会捕获这种情况并重定向到https,但这会给服务器带来不必要的额外流量.
这种额外流量的原因是重定向功能,因为它生成了错误的URL.我查看了redirect函数,并调用router :: url来创建实际的url.但是,我无法弄清楚如何或在何处指示路由器使用https而不是http.
蒂姆
我有一个Cakephp 2+站点需要某些操作来要求SSL连接(即登录,密码重置等),但我不要求整个站点是安全的.在实现这一点时,我发现在SSL和非SSL页面之间移动时没有保存Session.我在堆栈/sf/answers/844766961/上发现了这个问题解决了我的问题,但我想知道成本是多少.
上述问题的答案需要在lib/Cake/Model/Datasource /中注释掉一行,如下所示:
if (!isset($sessionConfig['ini']['session.cookie_secure']) && env('HTTPS')){
// $sessionConfig['ini']['session.cookie_secure'] = 1; // <-- Commented Out
}
Run Code Online (Sandbox Code Playgroud)
这样做有什么安全后果吗?另外,有没有办法在不影响蛋糕核心文件的情况下执行此操作,因为这通常不受欢迎?
提前致谢.
cakephp ×3
ssl ×2
cakephp-1.3 ×1
cakephp-2.0 ×1
cookies ×1
https ×1
redirect ×1
router ×1
security ×1
session ×1