【问题标题】:Laravel 5.3 redirect after authenticationLaravel 5.3 身份验证后重定向
【发布时间】:2016-12-30 12:01:54
【问题描述】:

我对 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');
}

【问题讨论】:

  • 你在哪里覆盖$redirectTo 变量?我在您的代码中没有看到分配给$this->redirectTo的值
  • 您是否尝试过返回字符串而不是重定向对象?
  • @yivi 我做了,我试过返回“admin/home”
  • @dragos 我删除了它。它是否存在并没有什么区别。我编辑了我的答案,所以注释部分是 $redirectTo 变量。
  • 返回正确的 URL,而不是路由名称。

标签: php authentication laravel-5.3


【解决方案1】:

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

【讨论】:

  • 非常感谢您的帮助:)
猜你喜欢
  • 2017-01-24
  • 2016-05-13
  • 2017-12-24
  • 2017-01-25
  • 1970-01-01
  • 2016-12-30
  • 2019-03-18
  • 2017-05-25
  • 2017-05-13
相关资源
最近更新 更多