网站处于维护模式时 CSRF Token 为空

CSRF Token empty when the website is in maintenance mode

我的目标是仍然允许管理员登录网站,即使是在维护模式下。 但是,当网站处于维护模式时(使用 php artisan down),Laravel 不会生成任何 CSRF 令牌。

csrf_token() 返回空字符串,csrf_field() 返回 <input type="hidden" name="_token" value="">

如果网站未处于维护模式,则不会出现此问题。

是否可以强制生成令牌?

您可能会遇到困难,因为维护模式纯粹是为了停止所有流量。您将必须创建自己的全局中间件来检查是否设置了值(可能是环境 属性)以确定您自己的维护模式是否开启。

你也可以说如果使用某个IP你可以绕过中间件。

一种适合您的解决方案是在启用维护模式时为您的管理路由禁用 csrf 令牌

为此打开

App\Http\Middleware\VerifyCsrfToken

并添加

protected $except = [
    '/your/route'
];