Sha*_*ges 1 php amazon-web-services laravel-5
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';
Run Code Online (Sandbox Code Playgroud)
在登录控制器上,当我查看刀片登录模板的来源时,我可以看到表单提交到正确的URL,https:// application-url/login.
我使用以下命令在AppServiceProvider.php文件中强制HTTPS:
if (!\App::environment('local')) {
\URL::forceScheme('https');
}
Run Code Online (Sandbox Code Playgroud)
一旦用户进行了"身份验证"并且浏览器无法解析http版本,单击后退按钮就会将其发送到正确的/仪表板路径.
登录表单提交时是否有其他位置我错过了?
万一有人还在讨论这个问题,文档说:
在终止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;
Run Code Online (Sandbox Code Playgroud)