我如何通过HTTPS登录并仍然在记录的HTTP上导航


How can I login via HTTPS and still navigate on HTTP as logged?

在Symfony中,如果我使用HTTPS模式登录,我总是重定向到HTTPS路由。如果我将其更改为从地址栏HTTP,它会再次询问我的密码。

我想通过HTTPS登录,但在其他页面上保持HTTP模式(除非我选择敏感数据)我怎样才能做到这一点?

用户通过HTTPS登录后,我应该在控制器内为HTTP制作另一个cookie吗?并检查 cookie 是否在http上有效?

我想这样做:

  1. David 使用用户名和密码登录网站 https://a.login
  2. 大卫重定向到https://a.admin/(因为它是https,因为它是管理页面)
  3. 大卫现在按下一个按钮,管理面板重定向不重要的页面。称为 http://a.somepage (不是 https)
  4. 但是我的网站(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