laravel - 为什么使用这个中间件后所有的路由都打不开了?

查看:311
本文介绍了laravel - 为什么使用这个中间件后所有的路由都打不开了?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

打开所有的路由都显示重定向次过过多 这个是为什么?

Route::group([],function(){
    Route::get('/', function () {
        return view('shouye');
    });
    Route::get('/123', array('as'=>'list','uses'=>function () {
        return route('list');
    }));
    Route::get('/456', ['middleware'=>'login','uses'=>function () {
        return 456;
    }]);
});

<?php

namespace App\Http\Middleware;

use Closure;

class LoginMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(!session('uid')){
            return redirect('/123');
        }
        return $next($request);
    }
}

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\LoginMiddleware::class,
    ];
    
protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'login'=>\App\Http\Middleware\LoginMiddleware::class,
    ];    

解决方案

楼主把LoginMiddleware这个中间件加在了Http/Kernel.php文件中的$middleware变量中,意味每次请求都会经过这个路由;

这样每次都会重定义向 /123这个路由上;而/123自身这个请求,也需要通过LoginMiddleware这个中间件,自然就是死循环了;

这篇关于laravel - 为什么使用这个中间件后所有的路由都打不开了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆