Laravel 5.2如何根据Controller更改RedirectIfAuthenticated的重定向?

时间:2016-03-15 09:02:05

标签: laravel-routing laravel-5.2 laravel-middleware laravel-authorization

我想知道是否可以为每个控制器进行不同的身份验证重定向?目前,所有内容都重定向到/ home。这适用于我的HomeController。但是对于ClientController,我希望它重定向到/ client(如果经过身份验证)而不是/ home。我是否必须为每个控制器制作一个新的中间件,或者有没有办法通过重用auth来实现这一目标?

RedirectIfAuthenticated.php

if (Auth::guard($guard)->check()) {
    return redirect('/home'); //anyway to change this to /client if coming from ClientController?
}

我在ClientController.php上有这个

public function __construct()
{
    $this->middleware('auth');
}

提前致谢! Laravel和Middleware相当新的。

2 个答案:

答案 0 :(得分:0)

没关系,我能够通过正确的路由使工作正常。 在web中间添加了ClientController,负责所有身份验证。

Route::group(['middleware' => ['web']], function () {
    Route::resource('client', 'ClientController');
}

并且在 ClientController.php,添加使用auth中间件。

public function __construct()
{
    $this->middleware('auth');
}

public function index()
{
    return view('client');
}

答案 1 :(得分:0)

只需在User型号中使用它:

protected $redirectTo = '/client';

您还可以通过更改Laravel的核心文件来实现此目的。如果您使用的是Laravel 5.2,请转到project_folder\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RedirectsUsers.php

您可以找到以下代码:

public function redirectPath()
{
    if (property_exists($this, 'redirectPath')) {
        return $this->redirectPath;
    }

    return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; //Change the route in this line
}

现在,将/home更改为/client。但是,我建议不要更改核心文件。你可以使用第一个。