Laravel生成无效路由

Laravel生成无效路由,laravel,routes,laravel-5,Laravel,Routes,Laravel 5,我不知道laravel发生了什么,laravel在我执行一些操作时生成了无效路由,比如打开评论框单击按钮评论模式框,但当我在chrome developer选项->网络中看到时,它显示了许多无效路由。知道为什么会这样吗 请参阅随附的屏幕快照: class Abc { public function handle($request, Closure $next) { if (\Auth::check() && \Auth::user()->admin

我不知道laravel发生了什么,laravel在我执行一些操作时生成了无效路由,比如打开评论框单击按钮评论模式框,但当我在chrome developer选项->网络中看到时,它显示了许多无效路由。知道为什么会这样吗

请参阅随附的屏幕快照:

class Abc {

    public function handle($request, Closure $next) {
        if (\Auth::check() && \Auth::user()->admin) {
            return $next($request);
        }
        return redirect()->route('user.login');
    }
}
Route::group(['prefix' => 'user', 'before' => 'no_auth'], function () {
    Route::get('login', ['as' => 'user.login', 'uses' => 'Auth\AuthController@showLoginForm']);
});
Route::post('user/login', ['as' => 'user.post.login', 'uses' => 'Auth\AuthController@postLogin']);
Route::get('user/logout', ['as' => 'user.logout', 'uses' => 'Auth\AuthController@getLogout']);
Admin是我的路由前缀

Route::group(['prefix' => 'admin', 'before' => 'allow_only_admin'], function () {
});

这是我的ABC中间件:

class Abc {

    public function handle($request, Closure $next) {
        if (\Auth::check() && \Auth::user()->admin) {
            return $next($request);
        }
        return redirect()->route('user.login');
    }
}
Route::group(['prefix' => 'user', 'before' => 'no_auth'], function () {
    Route::get('login', ['as' => 'user.login', 'uses' => 'Auth\AuthController@showLoginForm']);
});
Route::post('user/login', ['as' => 'user.post.login', 'uses' => 'Auth\AuthController@postLogin']);
Route::get('user/logout', ['as' => 'user.logout', 'uses' => 'Auth\AuthController@getLogout']);
这是我的No_auth过滤器:它检查登录的用户并重定向到it用户角色

Route::filter('no_auth', function () {
    if (Auth::check()) {
        if (Auth::user()->is('admin')) {
            return Redirect::route('orders.all');
        }

        if (Auth::user()->is('writer')) {
            return Redirect::route('windex');
        }

        if (Auth::user()->is('teamlead')) {
            return Redirect::route('tlindex');
        }
    }
});
这是登录路径:

class Abc {

    public function handle($request, Closure $next) {
        if (\Auth::check() && \Auth::user()->admin) {
            return $next($request);
        }
        return redirect()->route('user.login');
    }
}
Route::group(['prefix' => 'user', 'before' => 'no_auth'], function () {
    Route::get('login', ['as' => 'user.login', 'uses' => 'Auth\AuthController@showLoginForm']);
});
Route::post('user/login', ['as' => 'user.post.login', 'uses' => 'Auth\AuthController@postLogin']);
Route::get('user/logout', ['as' => 'user.logout', 'uses' => 'Auth\AuthController@getLogout']);

您的middlware可能会无限期地循环这些重定向。我试过重新定向一次,结果发生了。我建议重新组织您的管理中间件,以下是我使用的:

App\Http\Middleware\Admin.php:

<?php namespace App\Http\Middleware;

use Closure;

class Admin {

    public function handle($request, Closure $next)
    {
        if (\Auth::check() && \Auth::user()->admin) {
            return $next($request);
        }
       return redirect()->route('some.route');
    }
}
将其设置为中间件:在
Kernel.php中添加
'admin'=>'App\Http\middleware\admin',
然后在
routes.php中:
路由::组(['middleware'=>'admin'],函数(){
…管理路由

编辑: 添加更多代码后,下面是一些提示,它们可能会帮助您解决问题

您不需要路由筛选器,请将其全部删除。请使用路由组,以便管理路由在此语句中:

routes.php

Route::group(['middleware' => 'admin', 'prefix' => 'admin'], function() {
   ... admin routes
}
不要忘记在Kernel.php中使用正确的名称注册管理中间件(在我的示例中为
admin

要将用户重定向到他们自己的区域,请尝试将逻辑放入
Auth中的登录后路由中\AuthController@postLogin
。在那里,您将检查凭据是否正确(Auth::trunt),如果正确,则执行该操作以将用户重定向到正确的位置


你不需要这个
no_auth
filter,只需删除它。

你能用pastebin发布你的allow_only_admin中间件吗?这不是无效的路由。你正在重定向几乎所有的请求。你做错了什么->我不知道为什么它会创建无效,以及它是如何在内核中重定向添加的,就像这个受保护的$routeMiddleware=['admin'=>'App\Http\Middleware\admin',];但获取错误:Container.php第776行中的ReflectionException:Class admin不存在admin.php第6行中的FatalErrorException:无法重新声明Class App\Http\Middleware\admin您是否在
Http/Middleware
文件夹中创建了中间件文件?在
kernel.php
中将中间件名称映射到中间件文件,因此如果您将该文件映射到了
admin
,您将控制器中间件设置为仅此nam。我将添加更多的代码。您的第一个错误看起来像Kernel.php没有将单词“admin”映射到当前中间件。第二个错误看起来像是您在中间件命名空间中有另一个admin类。一切都很好,但新错误/警告此网页ge有一个重定向循环错误\u太多\u重定向