Laravel Nova:登录表单采用 HTTP 而不是 HTTPS

问题描述 投票:0回答:2

背景

我已经安装了 Laravel Nova,执行了迁移并按照文档创建了 Nova 用户 https://nova.laravel.com/docs/3.0/installation.html#installing-nova 。现在我正在尝试登录。

预期行为

当我发送登录表单时,我会被重定向到后台面板。

实际行为

当我发送登录表单时,我被重定向到 Chrome 页面“此页面不安全,您确定要发送表单数据吗?” (大约是法语显示错误的英语翻译:D)。

线索

登录表单显示在以下 URL:“https://.../nova/login”。

但是,登录表单包含以下内容

action
:“http://.../nova/login” - 注意:所以它不是 HTTPS,而是 HTTP。

问题

我可以在哪里设置 Laravel 和/或 Nova 配置选项来告诉 Nova 在 Nova 显示的登录表单的

https
中使用
http
而不是
action

laravel laravel-nova
2个回答
5
投票

由于 Nova 似乎没有使用任何环境/配置选项来选择好的 HTTP/HTTPS 协议,所以我直接在

app/Providers/AppServiceProvider
中编写了以下内容(注意:我真的不知道这个解决方案,所以我不建议你这样做,即使在我的情况下它可以很好地修复这个错误):

public function boot()
{
    \URL::forceScheme('https');
}

0
投票

正如 JarsofJam 指出的那样,

\URL::forceScheme('https');
是可以接受的,但请确保对环境使用适当的防护装置。例如:

if (config('app.env') !== 'local') {
    \URL::forceScheme('https');
}

这里的主要缺点是 URL 方案最好在生产环境中的代理级别(AWS 上的 ELB 或 Web 服务器)进行集中管理。

如果您特别希望将 Nova 登录操作 URL 转换为 HTTPS 并且不影响其他 URL,您可以覆盖主应用程序视图中的登录表单视图,并调整操作以使用您的

APP_URL
(使用 HTTP 或 HTTPS)配置。例如:

nova/resources/views/auth/login.blade.php
->
resources/views/vendor/nova/auth/login.blade.php

© www.soinside.com 2019 - 2024. All rights reserved.