无法正确重定向 laravel 5.2 上的不成功登录
Can't properly redirect unsuccessful login on laravel 5.2
我正在 Laravel 5.2 开发应用。
我正在尝试为后台实现一个授权页面。
在路由中我有一个组和授权中间件:
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”时,如果有用户登录,重定向到“/”,如果没有,重定向到“/admin/login”
当前行为是在登录失败时重定向到“/login”,我该如何更改?
如果您没有任何其他受授权保护的普通用户页面,您可以简单地修改 Authenticate 中间件,否则您可能需要扩展 Auth 中间件以添加对多个重定向点的支持
方案一,修改中间件:
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-admin',如上所示更改其 handle() 方法,并将该中间件应用于管理路由而不是 '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);
}
我正在 Laravel 5.2 开发应用。 我正在尝试为后台实现一个授权页面。
在路由中我有一个组和授权中间件:
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”时,如果有用户登录,重定向到“/”,如果没有,重定向到“/admin/login”
当前行为是在登录失败时重定向到“/login”,我该如何更改?
如果您没有任何其他受授权保护的普通用户页面,您可以简单地修改 Authenticate 中间件,否则您可能需要扩展 Auth 中间件以添加对多个重定向点的支持
方案一,修改中间件:
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-admin',如上所示更改其 handle() 方法,并将该中间件应用于管理路由而不是 '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);
}