我正在尝试使用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而不再通过中间件。
有人可以告诉我我错过了什么吗?
提前致谢!