Laravel 5 重定向循环错误

11

我尝试制作一个登录和管理员脚本,问题是我遇到了重定向循环,但我不知道原因。

我希望用户可以在/路径而不是/home中登录。

如果将return new RedirectResponse(url('/'));更改为return new RedirectResponse(url('/anotherpage'));,它可以工作,但我想要的是/

路由:

    Route::get('/', [
        'as' => 'home', 'uses' => 'HomeController@index'
    ]);


    // Tutorials Routes

    Route::get('/tutorials', 'HomeController@tutorials');
    Route::get('/tutorials/{category?}', 'HomeController@tutorialsCategory');
    Route::get('/tutorials/{category?}/{lesson?}', 'HomeController@tutorialsLesson');

    // Courses and Series Routes

    Route::get('/courses-and-series', 'HomeController@coursesandseries');

    // Admin Routes

    Route::group(['middleware' => 'App\Http\Middleware\AdminMiddleware'],                 function()
    {
        Route::get('/admin', function()
        {
            return 'Is admin';
        });
    });

    Route::controllers([
        'auth' => 'Auth\AuthController',
        'password' => 'Auth\PasswordController',
    ]);

管理员中间件:

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

        return $next($request);
    }

RedirectIfAuthenticated:

    public function handle($request, Closure $next)
    {
        if ($this->auth->check())
        {
            return new RedirectResponse(url('/'));
        }

        return $next($request);
    }

主页控制器:

class HomeController extends Controller {
    public function __construct()
    {
        $this->middleware('guest');
    }

    public function index()
    {
        return view('home');
    }

    public function tutorials()
    {
        return view('pages.tutorials');
    }

    public function tutorialsCategory()
    {
        return view('pages.tutorials');
    }

    public function tutorialsLesson()
    {
        return view('pages.single');
    }

    public function coursesandseries()
    {
        return view('pages.coursesandseries');
    }

    public function single()
    {
        return view('pages.single');
    }
}

尝试返回此代码:return new RedirectResponse(route('home')); - Emeka Mbah
无法工作 ERR_TOO_MANY_REDIRECTS。 - user4012084
这些是你唯一拥有的路由吗?你在控制器结构中有一个中间件吗?你是否将中间件附加到HomeController?我可以看一下HomeController的代码吗?问题可能来自它。 - Emeka Mbah
我在帖子中添加了HomeController,但我只创建了AdminController。谢谢。 - user4012084
移除 $this->middleware('guest'); - Emeka Mbah
1个回答

8
您之所以遇到这些重定向循环,是因为HomeController中的所有方法都受到Guest Middleware的保护。
由于您希望将已验证的用户重定向到HomeController@index,
请从HomeController中删除$this->middleware('guest');
或者
修改Guest Middleware以忽略index方法 $this->middleware('guest', ['only' => ['tutorials','tutorialsCategory']]) 列出其他您希望使用Guest Middleware保护的方法,但排除Index方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接