2017-05-09 34 views
1

如果未經授權的用戶試圖發表評論,我可以在評論控制器中捕獲它並將其發送到登錄頁面。Laravel 5如何發表評論後登錄

if(!Auth::user()) 
{ 
    return redirect()->guest('login'); 
} 

但成功登錄後,我希望評論自動發佈並返回到文章頁面。

回答

0

修訂

使用redirect()與閃存數據:

if (Auth::guest()) { 
    $comment = $request->get('comment'); 
    return redirect('login')->with('comment', $comment); 
} 

然後,在登錄控制器的認證後,檢查是否存在閃過會話數據,並把它重定向:

if (session('comment')) { 
    return redirect('comments')->with('flash_comment', session('flash_comment')); 
} 

查看更多about flash data on Laravel

更新2

爲了保持數據登錄後,需要重寫從AuthenticatesUser性狀的方法,將代碼放到\App\Http\Controllers\Auth\LoginController

protected function sendLoginResponse(Request $request) 
{ 
    //backup the comment 
    $comment = ""; 
    if (session('flash_comment')) { 
     $comment = session('flash_comment'); 
    } 

    $request->session()->regenerate(); 

    //sets the flash data again 
    if ($comment) { 
     $request->session()->flash('flash_comment', $comment); 
    } 

    $this->clearLoginAttempts($request); 

    return $this->authenticated($request, $this->guard()->user()) 
     ?: redirect()->intended($this->redirectPath()); 
} 

老啞答案

您可以將註釋保存爲標記爲active => false的數據庫。然後,當用戶通過認證時,更新他們對數據庫的評論,設置標誌active => true

+0

我如何知道他們的評論,如果他們發佈未經認證? – pera

+0

對不起,更新了答案 –

+0

虛擬答案實際上是虛擬的。它將允許未經身份驗證的用戶洪泛數據庫。 :D –