Route::post('posts', function (Request $request) {
$newPost = Post::create($request->all());
});
但是,如果我们的最终用户能够猜测出,我们这个posts表上有一个author_id字段,那又会怎样呢?如果他们使用浏览器工具添加作者ID字段并将ID设置为其他人的ID,并通过创建属于他们的假博客文章来模仿其他人,会怎么样?
Eloquent有一个称为"批量赋值"的概念,允许你将可填充字段(使用模型的$fillable属性)放到白名单,或者是将不可填充字段(模型的$guarded属性)放到黑名单然后通过数组传递给create()和update(),更多查看124页的"批量赋值"
class Post extends Model {
// Disable mass assignment on the author_id field
protected $guarded = ['author_id'];
}
使用$request->only()双层保护
尽管保护我们的模型不受批量赋值很重要,但在赋值结束时还是得小心。比起使用$request->all(),不如使用$request->only()来指定哪个字段传递给你的模型。