Laravel 5中间件验证无法正常工作

时间:2015-05-08 18:09:41

标签: php redirect laravel-5 infinite-loop middleware

如果用户尝试访问de 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);
    }

}

1 个答案:

答案 0 :(得分:3)

试试这个

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);
    }
}