繁体   English   中英

Laravel 5使用登录路由到HTTP强制HTTPS问题

[英]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上的负载均衡器转发应用程序的流量,并且不知道它应该生成安全链接。

基本上,这是因为请求以其方式将未知层传递到您的实例所引起的。

AWS解决方案

修改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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM