[英]Laravel 5 force HTTPS issue with login routing to HTTP
Laravel版本:Laravel 5.4.30
我遇到一个问题,我的生产代码托管在通过HTTPS服务的负载均衡器后面的AWS Elastic Beanstalk上。 使用内置的auth trait和make:auth控制器来验证用户登录时,在提交登录表单后,会将用户重定向到:
http:// application-url而不是https:// application-url / dashboard
在LoginController中,登录后应该路由到/ dashboard
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/dashboard';
在登录控制器上,当我查看刀片服务器登录模板的源代码时,我可以看到表单提交到正确的URL https:// application-url / login 。
我正在使用以下命令在AppServiceProvider.php文件中强制使用HTTPS:
if (!\App::environment('local')) {
\URL::forceScheme('https');
}
一旦用户获得“身份验证”并且浏览器无法解析http版本,则单击后退按钮后,他们将被发送到正确的/ dashboard路由。
提交登录表单后,我还有其他位置吗?
以防万一有人仍然碰到这个问题, 文档说:
在终止TLS / SSL证书的负载平衡器后面运行应用程序时,您可能会注意到您的应用程序有时不生成HTTPS链接。 通常,这是因为正在从端口80上的负载均衡器转发应用程序的流量,并且不知道它应该生成安全链接。
基本上,这是因为请求以其方式将未知层传递到您的实例所引起的。
修改App \\ Http \\ Middleware中包含的TrustProxies中间件:
// The trusted proxies (array)
protected $proxies = '*';
//The current proxy header mappings (also array)
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.