2016-04-03 117 views
2

我有一個場景,在用戶登錄成功後,我在會話中輸入某些信息。我正在使用Laravel 5.2。正如在Laravel 5.2中,您只需將用戶重定向到/login並指定protected $redirectTo變量,其餘部分由Laravel自己維護。現在,我希望每當用戶登錄成功,我想在會話中提供一些信息。目前,當用戶被重定向到我protected $redirectTo網址我在做什麼,我把信息像當用戶登錄時在會話中添加信息Laravel 5.2

\Session::put('user.data', $someData); 

它工作在正常情況下的罰款。但是,說用戶註銷並嘗試訪問一些auth保護的url,說example.com/showUsers保存在他的瀏覽器。現在,Laravel將檢查它的登錄受保護的URL,它將把用戶重定向到登錄頁面,用戶已成功登錄,現在在這種情況下,Laravel將用戶重定向到之前的URL。現在我想在會話中輸入的信息不在會話中,所以我得到錯誤。

我檢查了Auth/AuthController,Authication.php in middleware,但沒有找到任何地方。

目前,我把它在/app/Http/Middleware/Authenticate.php的最後一條語句return $next($request);之前這樣

if(empty(\Session::get('user.data'))) { 
     $someData = getSomeData(); 
     \Session::put('user.agency', $someData); 
} 
return $next($request); 

我不知道它的一個好方法,或不那麼任何機構可以讓我知道我在做什麼好做的地方我把我的會話代碼,每次用戶登錄時執行。

回答

2

據我所知,您正在使用AuthControllerAuthenticatesUsers特徵記錄您的用戶,其中默認的Laravel。

在第114行的AuthenticatesUser trait中,您將看到一個爲框架用戶編寫的方法定義檢查,以定義其他與登錄相關的工作。

/** 
* Send the response after the user was authenticated. 
* 
* @param \Illuminate\Http\Request $request 
* @param bool $throttles 
* @return \Illuminate\Http\Response 
*/ 
protected function handleUserWasAuthenticated(Request $request, $throttles) 
{ 
    if ($throttles) { 
     $this->clearLoginAttempts($request); 
    } 
    if (method_exists($this, 'authenticated')) { 
     return $this->authenticated($request, Auth::guard($this->getGuard())->user()); 
    } 
    return redirect()->intended($this->redirectPath()); 
} 

在你AuthController類,

創建一個名爲方法驗證,做你的工作應該有更多的預期行爲。

/** 
* Return the authenticated response. 
* 
* @param $request 
* @param $user 
* @return \Illuminate\Contracts\Routing\ResponseFactory 
*/ 
protected function authenticated(Request $request, $user) 
{ 
    // Here. 
} 
+0

謝謝你。那就是我正在尋找的東西。還有一個問題,如果我需要重寫Laravel的註冊過程,那麼我將查看哪些文件? –