Laravel Auth RedirectTo将被忽略

时间:2017-10-18 06:54:45

标签: php laravel-5 laravel-authorization

我使用Laravel 5.4 Auth的默认LoginController。我刚刚将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将设置为/.

我不想覆盖供应商目录中的RedirectsUsers特征。

我如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

当用户登录时,使用

完成重定向
/**
 * 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');
}