首页 文章

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

提问于
浏览
1

我在我的laravel 5.2应用程序中使用了我的路由器 .

预期的行为是:

  • 未注册用户试图访问受保护页面

  • 重定向到登录

  • 重定向(成功时)到目标页面

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

例:

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

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

protected $redirectTo = '/backoffice';

有没有办法将重定向设置为(默认为 or

4 回答

  • 1

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

    protected $redirectTo = '/backoffice';
    

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

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

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

    这是另一个答案about various Laravel versions

  • 0

    我发现 AuthenticatesUsers.php 中定义的 AuthenticatesUsers Trait 具有函数 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 .

  • 1

    我正在使用Laravel 5.4

    的LoginController:

    public function __construct()
        {
            session(['url.intended' => url()->previous()]);
            $this->redirectTo = session()->get('url.intended');
    
            $this->middleware('guest')->except('logout');
        }
    
  • 0

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

相关问题