Laravel背包限制用户访问管理面板

use*_*137 3 backpack-for-laravel

我正在尝试更改CheckIfAdmin中间件中的checkIfUserIsAdmin()方法以禁用对没有角色admin的所有用户的访问

发生什么了:什么都没有。背包用户()->可以(...)或背包用户()->角色(...)无法正常工作...是限制用户访问管理面板的正确方法吗?

bp-3.5

拉拉韦尔-5.7

的PHP-7.2

mer*_*dan 6

首先,创建一个中间件:

php artisan make:middleware AdminMiddleware
Run Code Online (Sandbox Code Playgroud)

在此文件中,我们将检查用户是否具有“管理员”角色

<?php
namespace App\Http\Middleware;
use Closure;
class AdminMiddleware
{
    public function handle($request, Closure $next)
    {
        if (! \Auth::user()->hasRole('admin')) 
            return response(trans('backpack::base.unauthorized'),401);
        return $next($request);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,将此中间件添加到/config/backpack/base.php

(不要删除CheckIfAdmin中间件,只需添加它)

'middleware_class' => [
    \Backpack\Base\app\Http\Middleware\CheckIfAdmin::class,
    \App\Http\Middleware\AdminMiddleware::class
],
Run Code Online (Sandbox Code Playgroud)


Rud*_*lph 5

一种方法是在 Http\Middleware 中制作一个中间件,例如 CheckIfAdmin.php,具有以下功能。

private function checkIfUserIsAdmin($user)
    {
        return ($user->is_admin == 1);
    }
Run Code Online (Sandbox Code Playgroud)

然后将此中间件添加到 Http\Kernel.php 的数组 $routeMiddleware 中。就像下面这样。

'admin' => \App\Http\Middleware\checkIfUserIsAdmin::class,
Run Code Online (Sandbox Code Playgroud)