1
如果未經授權的用戶試圖發表評論,我可以在評論控制器中捕獲它並將其發送到登錄頁面。Laravel 5如何發表評論後登錄
if(!Auth::user())
{
return redirect()->guest('login');
}
但成功登錄後,我希望評論自動發佈並返回到文章頁面。
如果未經授權的用戶試圖發表評論,我可以在評論控制器中捕獲它並將其發送到登錄頁面。Laravel 5如何發表評論後登錄
if(!Auth::user())
{
return redirect()->guest('login');
}
但成功登錄後,我希望評論自動發佈並返回到文章頁面。
修訂
使用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
。
我如何知道他們的評論,如果他們發佈未經認證? – pera
對不起,更新了答案 –
虛擬答案實際上是虛擬的。它將允許未經身份驗證的用戶洪泛數據庫。 :D –