[英]Laravel and Mass Assignment Protection
Laravel (5) 的批量赋值保护有一些不清楚的地方。 该保护声称默认情况下处于启用状态,仅当我在应用程序“外部”时才有效,例如来自自定义 artisan 命令。 当从自定义 artisan 命令运行时,从“php 应用程序”运行的相同质量分配代码将因质量分配异常而失败。 这是为什么? 任何地方都没有记录这种差异。
为什么“应用程序”和 php 工匠“命令”之间存在安全差异?
有没有办法让 artisan 命令在不更改fillable
或guarded
的情况下与批量分配一起工作?
您可以使用unguard命令来处理可填充数组的添加属性。
Model::unguard();
// User::create(['some_protected_attribute'=>'some value']);
Model::reguard();
在AppserviceProvider.php
的引导方法中Add Model::unguard()
以全局禁用批量分配保护。
<?php
namespace App\Providers;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot(){
Model::unguard();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.