用户可以创建新对象,并确保新对象连接到正确的用户.我的 idea 是使用当前登录用户的user_id编写一个隐藏字段:

<input style="display:none" name="group_id" type="number" value="{{ Auth()->User()->group_id }}">

现在的问题是,有人可以更改此处的值,并为另一个数字创建Objekt.

我想确保并在后端判断它,或者删除隐藏字段并将值添加到请求中. 目前,我的存储方法如下所示:

public function store(StoreObjektRequest $request)
    {   
        if (Auth()->User()->group_id != $request->group_id) 
        abort(403);

        $this->authorize('create', Objekt::class);
        
        Objekt::create($request->validated());
        return redirect()->route('dashboard')->with('message', 'Objekt erfolgreich erstellt');
    }

我的规则是:

public function rules()
    {
        return [
            'name' => 'required|max:5',
            'strasse' => 'required',
            'hausnummer' => 'required',
            'plz' => 'required',
            'ort' => 'required',
            'group_id' => 'required',
        ];
    }

我的问题是:判断新创建的对象的group_id的最佳方式是什么.我试图将值合并到请求中,但我自己的StoreObjektRequest正在等待所需的group_id.也许我可以使用我的保单,它目前正在返回True.

推荐答案

删除作为输入的group_id,并将其从验证中删除,因为它不是用户输入,而是从当前经过身份验证的用户那里获得.您可以从请求中获得经过验证的输入,然后将group_id合并到该数组中:

Objekt::create(auth()->user()->only('group_id') + $request->validated());

只需确保group_id在该型号上是"可填充的".

Php相关问答推荐

无法使用PHP DomDocument找到IMG元素

我的docker—compose lamp stack在软件更新后不工作:Containerconfig错误'''

PHP邮件表单无法识别重音/特殊字符

自定义WooCommerce查询字符串仅显示前3个产品

在Laravel中,如果我用session—put()存储一些信息,客户端浏览器是否可以使用这些信息?>

如何删除WordPress用户的个人资料描述或其他个人资料字段中的链接?

获取要删除的图像的公共ID

中继器内置中继器的ACF WordPress组

将客户重定向到自定义感谢页后的空白页

是否重新排序多维数组元素以将所有子数组中的子数组移动到元素列表的底部?

移动应用:在PHP中忽略Cookie?

模式 bootstrap 未显示

在WooCommerce购物车页面应用优惠券不会';t刷新总计

在 WooCommerce 更新结帐事件上动态更新自定义内容

有没有办法获取触发流操作的页面的 URI?

Laravel使用另一张表进行关联查询

自定义主键值未正确显示

PHP 日期格式:ISO8601 与 ISO8601_EXPANDED

为什么 PDO 允许使用带命名占位符的索引数组,但仅在禁用仿真时才允许?

无法按今天加上 7 天显示数据库项目