programing

라라벨어로 "매스 어사인먼트"가 무슨 뜻이죠?

kingscode 2023. 1. 22. 22:45
반응형

라라벨어로 "매스 어사인먼트"가 무슨 뜻이죠?

Laravel Document에서 웅변적인 ORM 토픽 파트를 읽었을 때 "매스 어사인먼트"라는 신조어를 얻었습니다.

에서는 매스 및 매스 할당 방법을 .$fillable ★★★★★★★★★★★★★★★★★」$guarded '매스 와 ' 어젠트에 대한 잘 안 하지만 그 일을 겪은 후, 저는 "대량 할당"과 그것이 어떻게 작동하는지 명확하게 이해하지 못했습니다.

CodeIgniter에서의 과거 경험에서도 이 용어에 대해 들어본 적이 없습니다.

그것에 대해 간단한 설명을 할 수 있는 사람이 있나요?

대량 할당은 모델 작성에 배열을 보내는 경우 기본적으로 모델 상의 여러 필드를 한 번에 설정하는 것으로, 다음과 같은 작업을 수행합니다.

$user = new User(request()->all());

(이는 모델의 각 값을 개별적으로 명시적으로 설정하는 것이 아니라)

하시면 됩니다.fillable실제로 업데이트를 허용하는 필드를 보호합니다.

또한 다음과 같이 하면 모든 필드를 대량 할당하지 못하도록 차단할 수 있습니다.

protected $guarded = ['*'];

에 ''라고 되어 있습니다.user_type사용자/관리자의 가치를 가질 수 있습니다.

사용자가 이 값을 업데이트할 수 없도록 해야 합니다.위의한다면, 에 새 필드를 할 수 .user_type소식나쁜 소식

추가:

$fillable = ['name', 'password', 'email'];

할 수 있습니다.mass assignment

user_type값을 모델에 명시적으로 설정하고 다음과 같이 저장해야 합니다.

$user->user_type = 'admin';
$user->save();

대량 할당은 지정된 모델에 저장될 데이터 배열을 한 번에 전송하는 프로세스입니다.일반적으로 모델에 데이터를 한 개씩 저장하는 것이 아니라 단일 프로세스로 저장할 필요가 있습니다.

대량 할당은 좋지만 이면에는 보안상의 문제가 있습니다.다른 사용자가 모델에 값을 전달하고 보호 없이 ID를 포함한 모든 필드를 수정할 수 있는 경우에는 어떻게 해야 합니까?그건 좋지 않아요.

"student_type, first_name, last_name" 필드가 있는 'students' 테이블이 있다고 가정합니다."first_name, last_name"을 일괄 할당할 수 있지만 student_type이 직접 변경되지 않도록 보호해야 합니다.거기서 충전이 가능하고 경비가 이뤄진다.

Fillable을 사용하면 모델에서 대량 할당 가능한 필드를 지정할 수 있습니다. 특수 변수를 추가하여 이 작업을 수행할 수 있습니다.$fillable모델까지.모델에서는 다음과 같이 합니다.

class Student extends Model {
      protected $fillable = ['first_name', 'last_name']; //only the field names inside the array can be mass-assign
} 

'type_type'은 포함되지 않습니다.즉, 면제됩니다.

경비는 충당 가능의 역이다.채우기가 가능한 경우 대량 할당할 필드를 지정하면 guarded는 대량 할당할 수 없는 필드를 지정합니다.모델에서는 다음과 같이 합니다.

class Student extends Model {
      protected $guarded = ['student_type']; //the field name inside the array is not mass-assignable
}

$fillable 또는 $fillable 중 하나를 사용해야 합니다.둘 다 사용할 수 없습니다.

자세한 내용은 링크를 엽니다.- 대량 할당

질량 할당은 데이터 배열을 사용하여 행을 둘 이상의 열로 채우는 것을 의미합니다.(수동으로 어레이를 빌드하는 대신 숏컷을 사용하여)Input::all().

엄밀히 말하면 내 머리 위에서만요채우기 가능은 테이블의 어떤 열을 삽입할 수 있는지, 가드는 모델이 특정 열에 삽입할 수 없음을 의미합니다.

"secret"이라는 이름의 컬럼에 삽입을 시도하고 보호되고 있는 컬럼에 삽입을 지정하면 모델을 통해 삽입을 시도할 수 있지만 실제로는 데이터베이스에 삽입은 삽입되지 않습니다.

이것은 모델 사용 시 보안 및 테이블 보호를 위한 것입니다.대량 할당은 어떤 것이 채워지고 보호되며 어떤 종류의 공격에 취약하게 만드는 모델인지 알려주지 않았다는 알림이나 경고인 것 같습니다.

이때 수신된 데이터 배열이 한 번에 모델에 저장됩니다.

이 방법에서는 보안 문제가 발생하기 때문에 요청된 데이터를 모델에 채울 필드를 정의하는 것이 좋습니다.

를 사용할 수 있습니다.$fillablevariable을 지정하여 데이터베이스 테이블에 입력할 필드를 정의합니다.

Protected $fillable = [‘username’, ‘dob’, ‘email’,];

larabel이 데이터를 대량 할당하는 것을 감지하면 모델 클래스에서 대량 할당하려는 필드를 강제로 정의합니다.

다른 사용자가 원치 않는 데이터를 HTML 형식으로 데이터베이스에 쉽게 전달할 수 있습니다.

There are two ways to handle this.

Laravel Eloquent provides an easy way to achieve this.
In your model class, add $fillable property and 
specify names of columns in the array like below:

여기에 이미지 설명 입력

You can achieve this by adding $guarded property in model class:

여기에 이미지 설명 입력

You can either choose $fillable or $guarded but not both.

언급URL : https://stackoverflow.com/questions/22279435/what-does-mass-assignment-mean-in-laravel

반응형