Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel中间件永远重定向_Laravel_Laravel 5_Laravel Middleware - Fatal编程技术网

Laravel中间件永远重定向

Laravel中间件永远重定向,laravel,laravel-5,laravel-middleware,Laravel,Laravel 5,Laravel Middleware,有人能帮我吗?我得到了一个无休止的重定向,这让我疯狂了一个星期 /*******路由**********/ 路由::组(['middleware'=>'auth'],函数(){ 路由::获取('/profile','UserController@profile'); //超级管理员 路由::组(['middleware'=>'admin'],函数(){ 路由::获取('/dashboard','UserController@dashboard'); }); //超级管理员 路由::组(['mid

有人能帮我吗?我得到了一个无休止的重定向,这让我疯狂了一个星期

/*******路由**********/
路由::组(['middleware'=>'auth'],函数(){
路由::获取('/profile','UserController@profile');
//超级管理员
路由::组(['middleware'=>'admin'],函数(){
路由::获取('/dashboard','UserController@dashboard');
});
//超级管理员
路由::组(['middleware'=>'superadmin'],函数(){
路由::获取('/settings','UserController@settings');
});
});
/******中间件*******/
//管理员
公共函数句柄($request,Closure$next)
{
if(Auth::check()){
if(User::isAdmin()){//验证超级管理员还是管理员
返回$next($request);
}否则{
返回重定向('/profile');
} 
}
//超级管理员
公共函数句柄($request,Closure$next)
{
if(Auth::check()){
if(User::issuerAdmin()){//validate if superadmin
返回$next($request);
}否则{
返回重定向('/profile');
}
}
}
好的,只是再次更新了代码,但仍然有问题 永远重定向有什么想法吗

// SuperAdmin
public function handle($request, Closure $next)
    {
        if (Auth::check()) {
            if (!User::isSuperAdmin()) {
                return new RedirectResponse(url('/profile'));
            }
        }

        return $next($request);
    }

// admin and superadmin
public function handle($request, Closure $next)
    {
        if (Auth::check()) {
            if (!User::isAdmin()) {
                return new RedirectResponse(url('/profile'));
            }
        } 

        return $next($request);
    }

// auth
public function handle($request, Closure $next)
    {
        if ($this->auth->guest())
        {
            if ($request->ajax())
            {
                return response('Unauthorized.', 401);
            }
            else
            {
                return redirect()->guest('/login');
            }
        }
    return $next($request);
}

修复了它。原因是$middleware和$routeMiddleware都使用相同的中间件

protected $middleware = [
        'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
        'Illuminate\Cookie\Middleware\EncryptCookies',
        'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
        'Illuminate\Session\Middleware\StartSession',
        'Illuminate\View\Middleware\ShareErrorsFromSession',
        'App\Http\Middleware\VerifyCsrfToken',
        //'App\Http\Middleware\SuperAdminMiddleware',
        //'App\Http\Middleware\AdminMiddleware',
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth'          => 'App\Http\Middleware\Authenticate',
        'auth.basic'    => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
        'guest'         => 'App\Http\Middleware\RedirectIfAuthenticated',
        'admin'         => 'App\Http\Middleware\AdminMiddleware',
        'superadmin'    => 'App\Http\Middleware\SuperAdminMiddleware',
    ];

请将代码作为问题的一部分,外部链接可能会随着时间的推移而变得不可访问。您正在访问的触发重定向循环的URL是什么?还请发布上面的
auth
中间件的代码。更新代码。您能检查一下吗?我已经测试了您的更新代码,它对我来说运行正常。您是什么URLu触发重定向循环时访问?奇怪。如果im只是管理员,则几乎所有链接的问题在于,
$middleware
在每个请求上运行,而
$routeMiddleware
可以专门应用于路由或控制器,并且仅在需要时运行。