Laravel 实现登录满5次可访问发帖页及相关报错问题咨询
问题原因与修复方案
核心错误原因
User::all()执行的是查询全表用户的操作,返回的是 Laravel 集合(Collection)实例,不是单个用户模型对象,集合本身不存在logincount属性,这是触发报错的直接原因。- 你的校验逻辑目标是当前已登录的用户,而非数据库中存储的全部用户,不需要查询全表用户。
- 原有判断条件写的是
>5,和需求「登录次数不少于5次」(即>=5)不符,会把刚好登录5次的用户拦截。 - 未满足校验条件时没有定义返回逻辑,会出现页面空白或者路由报错。
修复代码
首先确保你访问 create 方法的路由已经配置了 auth 中间件,保证只有登录状态的用户才能访问该方法,避免获取当前用户时返回空值:
public function create(){ // 获取当前登录的用户实例 $user = auth()->user(); if ($user->logincount >= 5) { return view('create'); } // 不满足条件时跳转回上一页面并携带提示,可根据自己的业务需求调整跳转逻辑 return redirect()->back()->with('error', '登录次数不足5次,暂无文章发布权限'); }
可选优化方案
如果该登录次数校验逻辑需要在多个控制器方法中复用,可以单独封装为 Laravel 中间件,避免重复编写校验代码。
内容的提问来源于stack exchange,提问作者marry
相关产品推荐
相关产品推荐

