2016-04-18 70 views
1

我在我的laravel 5.2应用程序中使用我的路由工作非常困难。laravel 5.2登录后重定向到预期的网址

预期的行为是:

  1. 未注册用户改掉访问受保护的页面
  2. 重定向到登录
  3. 重定向(成功)到拟页

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

例子:

/* Create a Payment | Only for registered Users (client) */ 
Route::post('payment', '[email protected]')->middleware('client'); 

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

protected $redirectTo = '/backoffice'; 

的页面是否有一种方法来重定向设置类似(inteded 默认)

+0

您是否尝试过'返回重定向() - >意向('backoffice');'按照这个? https://laravel.com/docs/5。2 /身份验证#身份验证用户 –

+0

我忘了说我想使用laravel的默认身份验证 –

回答

1

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

protected $redirectTo = '/backoffice'; 

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

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

Laravel将保留会话中的“intended.url”,并且成功登录后将用户重定向到/ backoffice。

这里是另一个答案about various Laravel versions

+0

我必须得出结论,您无法使用保留发布数据的方式重定向到路由。之后它将永远成为获取请求。 –

+1

如果我知道它是正确的,那么'withInput()'可以在这种情况下提供帮助。 [Laravel旧输入](https://laravel.com/docs/5.2/requests#old-input) – scorer

1

我发现,在AuthenticatesUsers.php定义AuthenticatesUsers Trait具有功能handleUserWasAuthenticated其中i t检查Laravel默认认证AuthController.php是否定义了方法authenticated。如果未定义此方法,则用户始终会重定向到您在$redirectTo属性中定义的任何内容。它不会将用户重定向到预期的URL。然而,在AuthController.php如果你定义的方法如下:按预期准确,用户通过身份验证后,他将被重定向到目的URL

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

redirect()->intended()会工作。

+1

这也将在注册后调用吗?如上所述,作为评论,实际的问题是,laravel将不允许保留发布数据并重定向到预期的POST路由/请求。这将成为获取请求。另外,由于laravel在登录后杀死当前会话,因此我无法在会话中存储数据以重新生成数据。 –

0

我使用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 “应用程序/ HTTP /控制器只更改/认证/ AuthController.php “ near line no 31 protected $ redirectTo ='/ Your_View_page';

相关问题