You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel评论功能登录验证问题排查与解决

问题解决:未登录用户评论未显示提示直接跳转的原因及修复

分享一个我刚踩过的评论功能坑:原本需求是仅登录用户可发表评论,未登录时显示提示“You must be logged in to post a comment”,结果测试时发现未登录状态下根本看不到提示,直接就跳转回之前的页面了。

折腾了半天终于找到问题根源:我的PostCommentsController被配置在了admin中间件里!这个中间件不仅要求用户登录,还强制需要管理员权限,一旦检测到用户未登录,会直接跳转到首页,导致控制器里我写的未登录分支代码根本没机会执行。

下面是我最初写的控制器代码:

public function store(Request $request) { 
    if (Auth::check()) { 
        $user = Auth::user(); 
        $data = [ 
            'post_id' => $request->post_id, 
            'author' => $user->name, 
            'email' => $user->email, 
            'body' => $request->body 
        ]; 
        Comment::create($data); 
        $request->session()->flash('comment_success','Your comment have been submited and is waiting moderation'); 
        return redirect()->back(); 
    } else { 
        $request->session()->flash('login','You must be logged in to post a comment'); 
        return redirect('/login')->back(); 
    } 
}

顺带提一句,代码里还有个小bug:redirect('/login')->back()这种写法逻辑矛盾,应该改成redirect()->back()(停留在当前页面显示提示)或者redirect('/login')(跳转到登录页),不过这不是导致跳转的核心问题。

修复方案:

  • 把PostCommentsController从admin中间件中移除,改用普通的auth中间件(只验证用户是否登录,不需要管理员权限)
  • 或者如果业务需要区分权限,单独给评论相关路由配置合适的中间件,确保未登录用户的请求能进入控制器的未登录分支,从而触发提示信息的显示

内容的提问来源于stack exchange,提问作者csow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:19:57