本系列文的環境狀態,可點擊此連結後花園環境參考
[ 種花囉! ]章節的會員系統 CRUD 將會是用 Api 放 POSTMAN 測試,所以不會用美美的前端教學,在此先給大家打個預防針。
Eloquent Model 什麼可以填進來?什麼填不進來呢?
table:不行~不要隨便進來~不要把我弄得亂七八糟啦! >x<
謎之音:咳~嗯~沒事~就請大家守規矩點,該做的保護要做好。
在此先填入下方程式碼後,會再稍微跟看倌解釋使用的原因跟關係。
路徑:app/Flower.php
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Flower extends Authenticatable
{
use Notifiable;
protected $fillable = [ // 使用批量分配( Mass Assignment )的填充白名單
'name', 'email', 'password', 'api_token'
];
protected $hidden = [ // 隱藏 model 的陣列或 JSON 的屬性
'password',
];
}
它可以確實獲得預期的表單字串,避免用戶提交非必要欄位資料。
若未使用,容易造成一般使用者可透過僞造欄位字串,就改變了身份或某些特殊資料。
例:如果系統有設置['is_dmin' => 1]這個欄位字串,可將用戶身份設置爲 管理員
,可是不提供給一般使用者填寫,但因爲沒有限制的話,一般使用者就可以自己僞造一個這樣的字串,竄改自己的身份。
如果有使用了 $fillable (白名單)或 $guarded (黑名單),此時 Eloquent Model 會先使用 fill()
的方法對資料進行過濾,填入在(白名單)內的字串,或去掉在(黑名單)內的字串,確保符合所想要的預期字串。
今天就跟看倌們介紹到此,咱們明天再續囉~
更多資訊,請參考下列連結:
❁ Laravel 官方- Eloquent: Getting Started
❁ Laravel 官方- Notifications
❁ 使用大量資料的方式新增(Mass Assignment)時無法新增
❁ Why do we use fillable in laravel?
❁ What is the use of fillable in Laravel?
❁ Laravel 官方- Eloquent: Serialization
❁ Laravel Mass-Assignment (批量分配) 的真正含義
❁ Laravel Mass Assignment, Guarded or Fillable?