Laravel 5如何在登录后发表评论

时间:2017-05-09 14:05:23

标签: php authentication laravel-5 laravel-5.3

如果未经身份验证的用户尝试发表评论,我可以在评论控制器中捕获它并将其发送到登录页面。

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

但成功登录后,我希望评论自动发布并返回到文章页面。

1 个答案:

答案 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'));
}

详细了解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