При работе с фреймворком Laravel необходимо усвоить две важные концепции: «защита» и «заполняемость». И защита, и заполняемость играют решающую роль в определении и управлении доступом и манипулированием данными в моделях Laravel. В этой статье мы рассмотрим разницу между Guard и Fillable, обсудим варианты их использования и предоставим примеры кода, иллюстрирующие их реализацию.
Содержание:
-
Понимание защиты
1.1 Что такое защита?
1.2 Определение защиты в Laravel
1.3 Пример кода: реализация защиты -
Понимание Fillable
2.1 Что такое Fillable?
2.2 Определение Fillable в Laravel
2.3 Пример кода: реализация Fillable -
Сравнение Guard и Fillable
3.1 Контроль доступа
3.2 Манипулирование данными
3.3 Связь с Eloquent
3.4 Выбор между Guard и Fillable -
Заключение
- Понимание защиты
1.1 Что такое охранники?
В Laravel охранники отвечают за аутентификацию пользователей и управление пользовательскими сеансами. Охранник определяет, как аутентифицируются пользователи и какой поставщик пользователей следует использовать. Laravel предоставляет несколько драйверов защиты, таких как сеанс, токен и API, каждый из которых имеет собственный механизм аутентификации.
1.2 Определение охранников в Laravel
Чтобы определить охранники в Laravel, вам необходимо настроить файл config/auth.php. По умолчанию Laravel использует «веб-защиту» для аутентификации веб-пользователей. Однако вы можете создать собственные средства защиты для обработки различных типов аутентификации, например аутентификации API.
1.3 Пример кода: реализация защиты
Вот пример определения пользовательской защиты с именем «api» в файле config/auth.php:
'guards' => [
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
- Понимание заполняемости
2.1 Что такое заполняемость?
В Eloquent ORM от Laravel свойство fillable определяет, какие атрибуты можно назначать массово. По умолчанию Eloquent предотвращает массовое назначение атрибутов по соображениям безопасности. Свойство fillable позволяет указать, какие атрибуты можно назначать в операции массового присвоения.
2.2 Определение заполняемых атрибутов в Laravel
Чтобы определить заполняемые атрибуты модели в Laravel, вам необходимо указать их в свойстве $fillableмодели. Только атрибуты, перечисленные в массиве $fillable, можно будет назначить посредством массового назначения.
2.3 Пример кода: реализация Fillable
Вот пример определения заполняемых атрибутов для модели User:
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}
- Сравнение защитного и заполняемого
3.1 Контроль доступа
Защитники в основном используются для аутентификации пользователей и управления сеансами, гарантируя, что соответствующие пользователи имеют доступ к защищенным ресурсам. С другой стороны, fillable используется для контроля того, какие атрибуты могут быть назначены массово, обеспечивая уровень защиты от непреднамеренных назначений.
3.2 Манипулирование данными
Защитники сосредоточены на аутентификации пользователей и обработке сеансов и не влияют напрямую на манипулирование данными внутри моделей. Fillable, с другой стороны, определяет, какие атрибуты могут быть назначены массово, что позволяет эффективно манипулировать данными с помощью таких методов, как create()или fill().
3.3 Отношения с Eloquent
Guards не имеют прямого отношения к моделям Eloquent. Они отвечают за аутентификацию пользователей, а модели Eloquent отвечают за взаимодействие с базой данных. С другой стороны, Fillable специально используется в моделях Eloquent для управления массовым назначением.
3.4 Выбор между защитным и заполняемым
Выбор между защитным и заполняемым зависит от конкретных требований вашего приложения. Если вам необходимо управлять аутентификацией пользователей и сеансами, защита необходима. Если вы хотите контролировать массовое назначение и обеспечивать целостность данных при работе с моделями Eloquent, подходящим выбором будет fillable.
- Заключение
В Laravel защитные и заполняемые элементы служат разным целям при управлении аутентификацией пользователей и манипулировании данными в моделях Eloquent. Охранники сосредоточены на аутентификации пользователей и управлении сеансами, а заполняемые элементы контролируют, какие атрибуты могут быть назначены массово. Понимание разницы между защитным и заполняемым имеет решающее значение для создания безопасных и эффективных приложений Laravel.