如果未经身份验证的用户尝试发表评论,我可以在评论控制器中捕获它并将其发送到登录页面。
if(!Auth::user())
{
return redirect()->guest('login');
}
但成功登录后,我希望评论自动发布并返回到文章页面。
答案 0 :(得分: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'));
}
更新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
。