如何保护 public Laravel livewire 属性 免受操纵?
How protect public Laravel livewire property from manipulation?
我正在使用我需要在请求之间访问的对象 $form
安装我的组件。
$form
中的数据不是秘密,但不应被篡改,所以我想将其设为 protected
属性。尽管在请求之间仅保留 public
属性,但它暴露在前端。
如果可能,我怎样才能防止对此 public 属性 进行操纵?
我试了一下
public function updating($key, $value)
{
if($key === 'form') return;
}
但我不认为这真的有任何作用。
此外,在我的情况下,使用会话不是替代方案。
有什么想法吗?
在我看来,您有以下选择:
不要将数据存储为 public 属性,而是 将其传递给
您在 render()
方法中的视图。
public function render(){
return view('Livewire.nameofyourview ', [
'form' => YourDataSource::get()
]);
}
这将在每次与您的组件交互时重新获取数据。您可以像以前一样在您的模板中访问它 $form
。
确保将 $form
删除为 public 属性。使用此解决方案无法操作 $form 数据表单 client/user 站点。 Docs
如果您需要 user/client 来操纵 验证规则
数据,但只有您期望的方式。
protected $rules = [
'form.name' => 'required|min:6',
'form.email' => 'required|email',
];
使用Laravel缓存在请求之间保存数据。这种技术
如果您无法从源中重新获取数据,则很有用,例如
它作为参数 (<livewire:form-component :form="$form">
) 传递给您的 Livewire 组件。
/* Cache the data on component mount */
public function mount($form)
{
Cache::set($this->id."_form", $form, 60*10);
}
public function someFunction()
{
/* read the data form cache, if you need it again */
cache($this->id."_form");
}
我正在使用我需要在请求之间访问的对象 $form
安装我的组件。
$form
中的数据不是秘密,但不应被篡改,所以我想将其设为 protected
属性。尽管在请求之间仅保留 public
属性,但它暴露在前端。
如果可能,我怎样才能防止对此 public 属性 进行操纵?
我试了一下
public function updating($key, $value)
{
if($key === 'form') return;
}
但我不认为这真的有任何作用。
此外,在我的情况下,使用会话不是替代方案。
有什么想法吗?
在我看来,您有以下选择:
不要将数据存储为 public 属性,而是 将其传递给 您在
render()
方法中的视图。public function render(){ return view('Livewire.nameofyourview ', [ 'form' => YourDataSource::get() ]); }
这将在每次与您的组件交互时重新获取数据。您可以像以前一样在您的模板中访问它
$form
。 确保将$form
删除为 public 属性。使用此解决方案无法操作 $form 数据表单 client/user 站点。 Docs如果您需要 user/client 来操纵 验证规则 数据,但只有您期望的方式。
protected $rules = [ 'form.name' => 'required|min:6', 'form.email' => 'required|email', ];
使用Laravel缓存在请求之间保存数据。这种技术 如果您无法从源中重新获取数据,则很有用,例如 它作为参数 (
<livewire:form-component :form="$form">
) 传递给您的 Livewire 组件。/* Cache the data on component mount */ public function mount($form) { Cache::set($this->id."_form", $form, 60*10); } public function someFunction() { /* read the data form cache, if you need it again */ cache($this->id."_form"); }