我正在尝试使用Laravel 5.2构建一个简单的管理仪表板,我创建了一个包含“web”和“auth”中间件的管理中间件 .

在我的kernel.php文件中:

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
    'admin' => [
        'web',
        'auth',
    ]
];

在我的路线中,我为我的管理路线创建了一个组 . 这是代码:

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function({
    Route::get('/', [
        'as'   => 'admin',
        'middleware' => 'admin', 
        'uses' => 'LoginController@dashboard',
    ]);

    Route::get('/login', [
        'as'   => 'login',
        'uses' => 'LoginController@login'
    ]);

    Route::post('/login', [
        'as'   => 'post_login',
        'uses' => 'LoginController@authenticate'
    ]);

});

LoginController:

class LoginController extends Controller
{
    public function dashboard()
    {
        return 'hey';
    }
    public function login()
    {   
        return view('admin.login');
    }
    public function authenticate()
    {   
         $requestData = request()->all();
         $email = $requestData['email'];
         $password = $requestData['password'];

         if (Auth::attempt(['email' => $email, 'password' => $password])) {

            return redirect()->intended('admin');
         }
    } 
}

而中间件:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->guest()) {
        if ($request->ajax()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest('admin/login');
        }
    }
    return $next($request);
}

现在,问题是,如果将我的'admin'中间件添加到路由组中,我会得到'太多的重定向循环',如果我只在管理员根路由上使用它,就像在显示的代码中我总是重定向到登录视图 . 即使在验证用户之后,我也总是通过中间件 . 对于我从文档中理解的内容,在用户凭据检查之后,我应该重定向到我试图首先访问的URL而不再通过中间件 .

有人可以告诉我,我错过了什么?

提前致谢!