【问题标题】:Laravel Auth RedirectTo will be ignoredLaravel Auth RedirectTo 将被忽略
【发布时间】:2018-03-29 23:36:28
【问题描述】:

我使用 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

我认为问题出在这一行的 trait 上:

return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';

但我不明白为什么。在LoginController 中,redirectTo 将设置为 /。

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

我该如何解决这个问题?

【问题讨论】:

    标签: php laravel-5 laravel-authorization


    【解决方案1】:

    当用户登录时,重定向是通过使用

    /**
     * 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');
    }
    

    guest中间件定义在app/Http/Kernel.phpsource

    编辑回答以回复评论

    guest中间件添加到app/Http/Controllers/Auth/LoginController.phpsource

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

    【讨论】:

    • 是的,没关系。但我不明白为什么当用户登录时 redirectTo 是 /home ,当它是访客用户时是 / (什么是正确的)
    • 重定向当用户登录时app/Http/Controllers/Auth/LoginController.php完成,重定向用户已经登录app/Http/Middleware/RedirectIfAuthenticated.php完成/跨度>
    • 非常感谢。没认出来。正是我要找的。​​span>
    • 不客气!再次更新答案,添加更多细节
    猜你喜欢
    • 2016-08-06
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多