Laravel Auth RedirectTo将被忽略

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.phpsource

if (Auth::guard($guard)->check()) { 
    return redirect('/home'); 
} 

客人中间件在app/Http/Kernel.phpsource

编辑答案定义的注释

客人中间件被添加到app/Http/Controllers/Auth/LoginController.phpsource

public function __construct() 
{ 
    $this->middleware('guest')->except('logout'); 
} 
+0

呀回应,这就是人我很好。但我不明白为什么当用户登录时,redirectTo是/ home,而当它是一个访客用户时,它是/(whats correct) – rob

+0

我更新了我的答案 – ljubadr

+0

当用户登录时重定向**完成在'app/Http/Controllers/Auth/LoginController.php'中,并且在用户已经登录后重定向**在'app/Http/Middleware/RedirectIfAuthenticated.php'中完成 – ljubadr