Laravel - Авторизация
В предыдущей главе мы изучили процесс аутентификации в Laravel. В этой главе объясняется процесс авторизации в Laravel.
Разница между аутентификацией и авторизацией
Прежде чем продолжить изучение процесса авторизации в Laravel, давайте поймем разницу между аутентификацией и авторизацией.
В authentication, система или веб-приложение идентифицируют своих пользователей с помощью предоставленных ими учетных данных. Если он обнаруживает, что учетные данные действительны, они аутентифицируются, в противном случае - нет.
В authorization, система или веб-приложение проверяет, могут ли аутентифицированные пользователи получить доступ к ресурсам, к которым они пытаются получить доступ, или сделать запрос. Другими словами, он проверяет их права и разрешения на запрашиваемые ресурсы. Если он обнаруживает, что они могут получить доступ к ресурсам, это означает, что они авторизованы.
Таким образом, authentication включает проверку действительности учетных данных пользователя, и authorization включает проверку прав и разрешений на ресурсы, которые есть у аутентифицированного пользователя.
Механизм авторизации в Laravel
Laravel предоставляет простой механизм авторизации, который включает два основных способа, а именно: Gates и Policies.
Написание ворот и политик
Шлюзы используются, чтобы определить, авторизован ли пользователь для выполнения определенного действия. Обычно они определяются вApp/Providers/AuthServiceProvider.phpс использованием фасада ворот. Шлюзы также являются функциями, которые объявлены для выполнения механизма авторизации.
Политики объявляются в массиве и используются в классах и методах, использующих механизм авторизации.
Следующие строки кода объясняют, как использовать Gates и Policies для авторизации пользователя в веб-приложении Laravel. Обратите внимание, что в этом примереboot функция используется для авторизации пользователей.
<?php
namespace App\Providers;
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any application authentication / authorization services.
*
* @param \Illuminate\Contracts\Auth\Access\Gate $gate
* @return void
*/
public function boot(GateContract $gate) {
$this->registerPolicies($gate);
//
}
}