Laravel 5.3 身份验证后重定向

Laravel 5.3 redirect after authentication

我在 Laravel 5.3 身份验证方面遇到问题。我想在登录后重定向用户。如果我想将所有用户重定向到我知道的同一路由,我可以更改属性 protected $redirectTo = 'mypath',但我想根据用户的类型重定向用户,因此我需要自定义逻辑。在它说的文档中,我应该

protected function redirectTo(){
  //my logic goes here
}

但我的功能一直被忽略。在它说的文档中,我的函数应该覆盖 $redirectTo 属性,但即使我删除它,它仍然会转到默认路由(“/home”)。如果我更改属性值,它会将我重定向到正确的路径,但我的功能仍然会被忽略。

https://laravel.com/docs/5.3/authentication#included-authenticating

我的登录控制器如下所示:

namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{

    use AuthenticatesUsers;

    //protected $redirectTo = '/';
    protected function redirectTo()
    {
        return redirect('admin/home');
    }

    public function __construct()
    {
        $this->middleware('guest', ['except' => 'logout']);
    }

}

编辑:如果我将我的函数命名为 authenticated() 而不是 redirectTo(),它将按计划工作。

protected function redirectTo()
{
      return redirect('admin/home');
}

Laravel 使用 RedirectUsers::redirectPath() 获取重定向路径。

它只检查 属性 redirectTo.

如果您想应用自定义逻辑 - 只需覆盖控制器中的 redirectPath() 方法。

namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{

    use AuthenticatesUsers;

    //protected $redirectTo = '/';
    public function redirectPath()
    {
        // ...
        // custom logic here 
        // ...

        return '/my/custom/url/here';
    }

    public function __construct()
    {
        $this->middleware('guest', ['except' => 'logout']);
    }

}

同样的方法适用于 RegisterControllerResetPasswordController