因为中间件无法访问某些路由

时间:2017-11-09 07:38:24

标签: laravel laravel-5 middleware

我是Laravel的新手,我正在学习一些教程。在那些教程中,我创建了一些名为Admin的中间件,在管理员中间件中我创建了类似的代码:

if (Auth::user() &&  Auth::user()->admin == 1) {

            Session::flash('success','U do not have access to this menu');
            return back();

}

在我的路线中,我的设置如下:

Route::get('/users/{id}/makeadmin', 'UsersController@admin')->name('users.makeadmin')->middleware('admin');

非管理员的成功,但是当使用管理员时我被阻止了,尽管在用户表中我已经将管理员设置为1.所以我错过了什么或者我做错了吗?我目前正在使用laravel 5.5。

2 个答案:

答案 0 :(得分:0)

抱歉,这很愚蠢,我忘了把“!”这就是为什么我不能访问路线,虽然它的管理员已经。所以这就是我的工作。

if (!Auth::user() &&  Auth::user()->admin !== 1) {

            Session::flash('success','U do not have access to this menu');
            return back();

}

答案 1 :(得分:0)

在中间件中试试这个:

public function handle($request, Closure $next)
{
    if ( Auth::check() &&  Auth::user()->admin == 1)
        return $next($request); 
    Session::flash('success','U do not have access to this menu');
    return back();
}