Laravel 5 中间件验证检查不工作

Laravel 5 middleware Auth check not working

如果用户未登录或没有 'Admin' 类型而尝试访问管理页面,我想显示 404 错误页面。如果用户已登录,则此工作正常,如果不是用户访问管理面板。如果我删除 if(Auth::check()) 脚本会显示 Trying to get property of non-object 错误。

class AdminMiddleware {
    public function handle($request, Closure $next)
    {
        if(Auth::check()){
            if ($request->user()->type != 'Admin'){
                return abort(404);
            }
        }

        return $next($request);
    }

}

试试这个

class AdminMiddleware {
    public function handle($request, Closure $next)
    {
        if(Auth::check()){
            if ($request->user()->type != 'Admin'){
                return abort(404);
            }
        }else{
            return abort(404);
        }
        return $next($request);
    }
}

它应该检查用户是否已登录,如果是,请检查他和管理员是否登录,如果他未登录,则向他显示 404

或更短的版本

class AdminMiddleware {
    public function handle($request, Closure $next)
    {
        if(Auth::check() && $request->user()->type == 'Admin'){
            return $next($request);
        }
        return abort(404);
    }
}