我在Laravel 5.2中制作应用程序。 我试图为后台实现一个auth页面。
在路线中,我有一个小组和auth中间件:
Route::group(['prefix' => 'admin'], function () {
Route::group(['middleware' => 'auth'], function () {
Route::get('/', 'IndexController@admin_index')->name('admin_index');
Route::get('/logout', 'IndexController@admin_logout')->name('logout');
});
Route::get('/login', 'UsersController@admin_login')->name('login');
});
我想在这里完成的是当我输入" / admin"时,如果用户被记录,则重定向到" /"如果没有,则重定向到" /管理/登录"
当前行为重定向到" / login"如果登录失败,我该如何更改?
答案 0 :(得分:3)
如果您没有为常规用户提供任何其他经过身份验证的页面,您只需修改Authenticate中间件,否则您可能需要扩展Auth中间件以添加对多个重定向点的支持
选项1,修改中间件:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
// Changing login to admin/login
return redirect()->guest('admin/login');
}
}
return $next($request);
}
选项2 - 创建一个auth中间件,让我们说“auth-admin”,更改上面显示的handle()方法,并将该中间件应用于管理路由而不是& #39; AUTH'中间件。
选项3 - 在handle()方法中添加条件
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
$destination = (strpos($request->path(), 'admin') !== false) ? 'admin/login' : 'login';
return redirect()->guest($destination);
}
}
return $next($request);
}