繁体   English   中英

登录后,laravel 5.2 重定向到预期的 url

[英]laravel 5.2 redirect to intended url after login

我正在为我的 Laravel 5.2 应用程序中的路由而苦苦挣扎。

预期的行为是:

  1. 未注册用户尝试访问受保护页面
  2. 重定向到登录
  3. 重定向(成功)到预期页面

当然,如果没有预期的页面(当他主动登录时),用户应该被重定向到他的“仪表板”

示例:

/* Create a Payment | Only for registered Users (client) */
Route::post('payment', 'PaymentController@create')->middleware('client'); 

用户将被重定向到登录页面,但是,登录后,他将被重定向到我在我的 authcontroller 中定义为 $redirectTo 的页面

protected $redirectTo = '/backoffice';

有没有办法将重定向设置为类似(intededdefault)

我发现AuthenticatesUsers Trait定义AuthenticatesUsers.php已经功能handleUserWasAuthenticated它检查是否Laravel默认身份验证AuthController.php有一个方法authenticated定义或没有。 如果未定义此方法,则用户始终重定向到您在$redirectTo属性中定义的任何内容。 它不会将用户重定向到预期的 URL。 但是,在AuthController.php如果定义如下方法:

protected function authenticated (Request $request, $user){
  //add ur custom actions after the user is authenticated
}

redirect()->intended()将完全按照您的预期工作,并且在用户通过身份验证后,他将被重定向到预期的 URL。

如果您希望未登录的用户重定向到登录页面,并在成功登录后返回到预期的 url 或变量中设置的默认值。

protected $redirectTo = '/backoffice';

那么可能你会使用这样的东西。

return redirect()->guest('login');

Laravel 将在会话中为您保留“intended.url”,并在成功登录后将用户重定向回 /backoffice。

这是关于各种 Laravel 版本的另一个答案

此解决方案将与 Laravel 5 和 6 完美配合,我目前正在研究 Laravel 6.0。*

只需将此函数添加到 app\\Http\\Controllers\\Auth\\loginController.php 中:

public function redirectTo()
{
    $finalRedirectionTo = \Session::get('url.intended', $this->redirectTo);
    return $finalRedirectionTo;
}

就是这样! 因为 de RedirectUsers Laravel trait 由 AuthenticatesUsers trait 实现,您的 LoginController 也应该“使用”,所以检查函数 redirectTo() 是否存在并调用它以返回重定向的 url。

它适用于社交和本地帐户

我希望它有帮助! 大卫·莱昂斯

我正在使用 Laravel 5.4

登录控制器:

public function __construct()
    {
        session(['url.intended' => url()->previous()]);
        $this->redirectTo = session()->get('url.intended');

        $this->middleware('guest')->except('logout');
    }

在 5.2 中,仅在第 31 行附近的“app/Http/Controllers/Auth/AuthController.php”中更改 protected $redirectTo = '/Your_View_page';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM