网站处于维护模式时 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'
];
我的目标是仍然允许管理员登录网站,即使是在维护模式下。
但是,当网站处于维护模式时(使用 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'
];