在继续执行其他功能之前,Laravel会检查用户是否具有特定角色

时间:2017-08-09 14:35:43

标签: php laravel laravel-5

我有一个像这样的控制器:

public function __construct() 
{
    $check = Auth::id();

    if ($check->role == '5') {
        // allow to run any other controller
    } else {
        // return view('home')
    }

    return $check;
}

public function index() 
{
    return view('admin.home');
}

我想要做的是,无论何时触发AdminController,运行__construct函数并检查role == 5是否为public function handle($request, Closure $next) { if ($request->role == 2) { } else { return view('index'); } return $next($request); } ,如果是,则继续请求,否则返回视图。怎么办?

修改

protected $middlewareGroups = [
    'admin' => [
        \App\Http\Middleware\CheckAdmin::class,
    ],
];

内核:

Route::group(['middleware' => ['admin']], function () {

路线:

Html.fromHtml(String.format(Locale.getDefault(), "<b>%s</b>", wrappedName))

错误::

  

(1/1)FatalThrowableError调用成员函数setCookie()on   VerifyCsrfToken.php中的null(第156行)

2 个答案:

答案 0 :(得分:3)

view()会返回Illuminate\View\View个对象,而不是Illuminate\Http\Response。所以不是发送视图。将用户重定向到index路径

试试这个

public function handle($request, Closure $next)
{
    if ($request->role != 2) {
        return return redirect()->route('index');
    }

    return $next($request);
}

答案 1 :(得分:-1)

Zayn Ali完美地解释了这一点,但如果你不想弄脏你的手,那么 我建议你使用委托包。
它是一个非常高效和高级的角色权限管理器。

Zizaco/Entrust Package