我正在尝试更改CheckIfAdmin中间件中的checkIfUserIsAdmin()方法,以禁用对没有角色admin的所有用户的访问权限
发生了什么: 没有。背包用户()->可以(...)或背包用户()->角色(...)无法正常工作... 是限制用户访问管理面板的正确方法吗?
bp-3.5
laravel-5.7
php-7.2
答案 0 :(得分:2)
首先,创建一个中间件:
php artisan make:middleware AdminMiddleware
在此文件中,我们将检查用户是否具有“管理员”角色
<?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);
}
}
现在,将此中间件添加到/config/backpack/base.php
(不要删除CheckIfAdmin中间件,只需添加它即可)
'middleware_class' => [
\Backpack\Base\app\Http\Middleware\CheckIfAdmin::class,
\App\Http\Middleware\AdminMiddleware::class
],
答案 1 :(得分:1)
一种方法是使用以下功能在Http \ Middleware(例如CheckIfAdmin.php)中创建中间件。
private function checkIfUserIsAdmin($user)
{
return ($user->is_admin == 1);
}
然后将该中间件添加到Http \ Kernel.php的数组$ routeMiddleware中。如下所示。
'admin' => \App\Http\Middleware\checkIfUserIsAdmin::class,