首页 > 解决方案 > 管理员如何使用 Laravel 5.8 在维护模式下访问站点?

问题描述

我想使用维护模式,但我不知道之后如何以管理员身份访问我的网站。我应该怎么办?

最后的目标是让管理员使用按钮或其他东西进入/退出维护模式。

我用它来验证管理员是否确实进入了管理页面。

if(Auth::user()->role_id == 1)

那么,如果用户是管理员,我该如何从维护模式中排除呢?

太感谢了..

标签: phplaravel

解决方案


将现有中间件替换app/Http/Middleware/CheckForMaintenanceMode.php为以下内容:

<?php

namespace App\Http\Middleware;

use closure;
use Illuminate\Foundation\Http\Exceptions\MaintenanceModeException;
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;

class CheckForMaintenanceMode extends Middleware
{
    public function handle($request, Closure $next)
    {   
        if (!$this->isAdmin() && $this->app->isDownForMaintenance()) {
            $data = json_decode(file_get_contents($this->app->storagePath() . '/framework/down'), true);

            throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']);
        }

        return $next($request);
    }

    private function isAdmin()
    {
        return optional(auth()->user())->role_id == 1;
    }
}

笔记:

isAdmin()是定义管理员用户标准的函数。您可以根据您的自定义标准对其进行更改。您可以更好地将此函数放置在User模型中以实现可重用性。

希望能帮助到你!


推荐阅读