无法在laravel 5.2上正确重定向登录失败

时间:2016-05-19 20:15:39

标签: php laravel routes laravel-5.2 laravel-routing

我在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"如果登录失败,我该如何更改?

1 个答案:

答案 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);
    }