在Symfony中,如果我使用HTTPS
模式登录,我总是重定向到HTTPS
路由。如果我将其更改为从地址栏HTTP
,它会再次询问我的密码。
我想通过HTTPS
登录,但在其他页面上保持HTTP
模式(除非我选择敏感数据)我怎样才能做到这一点?
用户通过HTTPS登录后,我应该在控制器内为HTTP制作另一个cookie吗?并检查 cookie 是否在http
上有效?
我想这样做:
- David 使用用户名和密码登录网站
https://a.login
- 大卫重定向到
https://a.admin/
(因为它是https,因为它是管理页面) - 大卫现在按下一个按钮,管理面板重定向不重要的页面。称为 http://a.somepage (不是 https)
- 但是我的网站(symfony)应该知道这是大卫。而是再次询问密码和用户名。因为它来自HTTPS到HTTTP
我正在使用Symfony的标准SecurityBundle
。同时使用两种模式 (http/s) 进行身份验证的正确方法是什么?
真实世界的例子:
StackOverflow也做同样的事情。我点击log in
并重定向到https
成功登录后,我只用HTTP
回到这里。我错过了什么吗?
Nelmio
我在GitHub上找到了这个捆绑包。它做我想要的,甚至更多。我建议并选择这个作为答案。
灵活的HTTPS/SSL处理:如果您不想强制所有用户 使用HTTPS,您至少应该使用安全的会话cookie并强制 登录用户的 SSL。但随后登录的用户显示为注销 当他们访问非 HTTPS 资源时。这真的不是一个好 溶液。这将使应用程序检测登录用户和 将它们重定向到安全 URL,而无需制作会话 cookie 不安全的。
参考: https://github.com/nelmio/NelmioSecurityBundle#flexible-httpsssl-handling