我想知道是否可以为每个控制器进行不同的身份验证重定向?目前,所有内容都重定向到/ 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相当新的。
答案 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
。但是,我建议不要更改核心文件。你可以使用第一个。