您的位置:首页 > 技术中心 > php框架 >

laravel怎么启用“禁止批量赋值”特性

时间:2023-04-09 00:32

在Laravel框架中,不可批量赋值是一个重要的安全特性,它有助于防止恶意用户篡改数据库数据。但是这个特性也有用途不明确的时候,造成了许多程序员的困惑。

在批量赋值时,程序员将表单数据直接通过create或者update方法保存到数据库中。如果不进行任何验证,由于存在黑客攻击、注入等严重威胁,那么便会有极大的风险。为了解决这个问题,Laravel引入了一个特性,即禁止批量赋值。

不可批量赋值是指,在使用create或者update方法的时候,如果没有指定允许保存的字段,那么程序会自动过滤掉所有非法的字段。这个特性不仅提高了程序的安全性,也加强了对程序员的开发约束:只有明确允许的字段才能保存到数据库中。

通过非常简单的一行代码即可启用这个特性。在需要禁止批量赋值的模型中使用$guarded属性。

<?phpnamespace App;use IlluminateDatabaseEloquentModel;class User extends Model{    protected $guarded = [];}

在例子中,$guarded属性是一个空数组,意味着所有的字段都是可编辑的。

如果想要只允许保存特定的字段,可以将$guarded属性设置为一个包含所有不允许编辑的字段的数组,或者使用$fillable属性。

<?phpnamespace App;use IlluminateDatabaseEloquentModel;class User extends Model{    protected $fillable = ['name', 'email', 'password'];}

更好的做法是在控制器中进行数据验证,验证后再保存到数据库中。这样可以避免一些误操作和安全问题。

<?phpnamespace AppHttpControllers;use AppUser;use IlluminateHttpRequest;class UserController extends Controller{    public function store(Request $request)    {        $validatedData = $request->validate([            'name' => 'required|string',            'email' => 'required|email|unique:users',            'password' => 'required|confirmed',        ]);        $user = User::create($validatedData);        return back()->with('success', 'User created successfully.');    }}

这里通过validate方法验证了所有输入的字段。如果验证成功,再保存到数据库中。以上代码不仅安全性高,而且代码也很优雅。

总的来说,Laravel的不可批量赋值是一个很完美的机制,能有效地提高程序的安全性。我们应该尽可能地利用这个特性,避免在开发中造成不必要的风险。

以上就是laravel怎么启用“禁止批量赋值”特性的详细内容,更多请关注Gxl网其它相关文章!

热门排行

今日推荐

热门手游