1. 程式人生 > >Laravel Model 的 fillable (白名單)與 guarded (黑名單)

Laravel Model 的 fillable (白名單)與 guarded (黑名單)

laravel mic 註意 guard 基於 family quest str microsoft

例如

protected $fillable = [‘name‘];
protected $guarded = [‘price‘];

定義了 name 字段可以寫入/修改,而 price 字段不可以。

需要註意的是,fillable 與 guarded 只限制了 create 方法,而不會限制 save。

我覺得 Laravel 這樣設計的原因是,create 通常是使用 request 中的所有請求參數來創建對象,而 save 則是一個字段一個字段的手動賦值,所以 create 有可能會惡意加入不應該插入的字段,例如 is_admin。基於此,create 還是需要有 fillable, guarded 來過濾一層比較安全。

Laravel Model 的 fillable (白名單)與 guarded (黑名單)