Laravel Auth RedirectTo将被忽略
问题描述:
我使用Laravel 5.4 Auth的默认LoginController。我只是修改了redirectTo
属性/Laravel Auth RedirectTo将被忽略
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
现在我的身份登录的用户。登录后重定向到/工作正常。 因此,现在我再次转到/login
,现在trait RedirectsUsers
重定向到/home
。
我认为这个问题是在这条线的特点:
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
,但我不明白为什么。在LoginController
中,redirectTo
将被设置为/。
我不想覆盖vendor目录中的RedirectsUsers
特征。
我该如何解决这个问题?
答
当用户登录时,重定向是通过使用
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
从app/Http/Controllers/Auth/LoginController.php
完成后用户已登录和访问的/login
页,重定向(至/home
)是定义于 这个中间件
app/Http/Middleware/RedirectIfAuthenticated.php
source
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
客人中间件在app/Http/Kernel.php
source
编辑答案定义的注释
客人中间件被添加到app/Http/Controllers/Auth/LoginController.php
source
public function __construct()
{
$this->middleware('guest')->except('logout');
}
呀回应,这就是人我很好。但我不明白为什么当用户登录时,redirectTo是/ home,而当它是一个访客用户时,它是/(whats correct) – rob
我更新了我的答案 – ljubadr
当用户登录时重定向**完成在'app/Http/Controllers/Auth/LoginController.php'中,并且在用户已经登录后重定向**在'app/Http/Middleware/RedirectIfAuthenticated.php'中完成 – ljubadr