0

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

重定向IfAuthenticated.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 和中间件来说相当新。

4

2 回答 2

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');
}
于 2016-03-15T09:32:52.980 回答
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. 但是,我建议不要更改核心文件。你可以使用第一个。

于 2016-03-15T10:02:45.753 回答