Основываясь на caspian, laravel авторизация-это библиотека авторизации, которая поддерживает доступ к нескольким моделям управления доступом (таким как ACL, RBAC, ABAC и т.д.). Перед этим вам нужно понять Кабина
。
устанавливать
Использование Композитор
Установка:
composer require casbin/laravel-authz
Lauthz\LauthzServiceProvider
да автоматически обнаружен
По умолчанию, но если вы хотите зарегистрироваться, вы можете config/app.
php
Добавить ServiceProvider
:
'providers' => [ /* * Package Service Providers... */ Lauthz\LauthzServiceProvider::class, ]
Исполнитель
фасад
Также автоматически обнаружен
, но если вы хотите добавить его вручную, в config/app.php
Добавить в:
'aliases' => [ // ... 'Enforcer' => Lauthz\Facades\Enforcer::class, ]
Чтобы опубликовать конфигурацию, запустите поставщик:опубликовать
Заказать:
php artisan vendor:publish
Это автоматически создается Модель
файл конфигурации config/auth-
rbac
-model.conf
И новый Authz
файл конфигурации config/lauthz.php
。
Чтобы перенести миграцию, выполните команду migrate:
php artisan migrate
Это создаст правила
Технический паспорт.
использование
Быстрый старт
После установки вы можете выполнить следующие действия:
use Enforcer; // adds permissions to a user Enforcer::addPermissionForUser('eve', 'articles', 'read'); // adds a role for a user. Enforcer::addRoleForUser('eve', 'writer'); // adds permissions to a rule Enforcer::addPolicy('writer', 'articles','edit');
Вы можете проверить права пользователя следующим образом:
// to check if a user has permission if (Enforcer::enforce("eve", "articles", "edit")) { // permit eve to edit articles } else { // deny the request, show an error }
Использование API enforcer
Он предоставляет очень богатый API
Для продвижения Политики
Операций:
Получить все роли:
Enforcer::getAllRoles(); // ['writer', 'reader']
Получить правила авторизации для всех ролей:
Enforcer::getPolicy();
Получить все роли для пользователя:
Enforcer::getRolesForUser('eve'); // ['writer']
Получить всех пользователей для роли:
Enforcer::getUsersForRole('writer'); // ['eve']
Определите, есть ли у пользователя роль:
Enforcer::hasRoleForUser('eve', 'writer'); // true or false
Чтобы добавить роль пользователю:
Enforcer::addRoleForUser('eve', 'writer');
Чтобы предоставить разрешение пользователю или роли:
// to user Enforcer::addPermissionForUser('eve', 'articles', 'read'); // to role Enforcer::addPermissionForUser('writer', 'articles','edit');
Чтобы удалить роль пользователя:
Enforcer::deleteRoleForUser('eve', 'writer');
Чтобы удалить все роли для пользователя:
Enforcer::deleteRolesForUser('eve');
Чтобы удалить одну роль:
Enforcer::deleteRole('writer');
Удалить разрешение:
Enforcer::deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
Чтобы удалить разрешения для пользователя или роли:
Enforcer::deletePermissionForUser('eve', 'articles', 'read');
Удалите все разрешения для пользователя или роли:
// to user Enforcer::deletePermissionsForUser('eve'); // to role Enforcer::deletePermissionsForUser('writer');
Получите все разрешения для пользователя или роли:
Enforcer::getPermissionsForUser('eve'); // return array
Подумайте, есть ли у пользователя определенное разрешение:
Enforcer::hasPermissionForUser('eve', 'articles', 'read'); // true or false
Подробнее API
См. каспийский API.
Использование промежуточного программного обеспечения
Пакет расширения содержит Промежуточное программное обеспечение Enforcer
и Промежуточное программное обеспечение запроса
Промежуточное программное обеспечение. Вы можете добавить их в свой app/Http/Kernel.php
В документе:
protected $routeMiddleware = [ // ... // a basic Enforcer Middleware 'enforcer' => \Lauthz\Middlewares\EnforcerMiddleware::class, // an HTTP Request Middleware 'http_request' => \Lauthz\Middlewares\RequestMiddleware::class, ];
Базовое промежуточное программное обеспечение enforcer
Затем они могут быть использованы для защиты маршрутов:
Route::group(['middleware' => ['enforcer:articles,read']], function () { // pass });
Промежуточное программное обеспечение HTTP-запросов (поддерживает restful)
Если вам нужно авторизовать запрос, вам необходимо сначала config/auth-rbac-model.conf
Конфигурация модели, определенная в:
[request_definition] r = sub, obj, act [policy_definition] p = sub, obj, act [role_definition] g = _, _ [policy_effect] e = some(where (p.eft == allow)) [matchers] m = g(r.sub, p.sub) && keyMatch2(r.obj, p.obj) && regexMatch(r.act, p.act)
Затем используйте правила промежуточного программного обеспечения:
Route::group(['middleware' => ['http_request']], function () { Route::resource('photo', 'PhotoController'); });
Множество лиц, принимающих решения
Если вам нужно более одного элемента управления разрешениями в вашем проекте, вы можете настроить более одного Лица, принимающего решения
.
оставайтесь authz
В файле конфигурации, вы должны настроить следующим образом:
return [ 'default' => 'basic', 'basic' => [ 'model' => [ // ... ], 'adapter' => Lauthz\Adapters\DatabaseAdapter::class, // ... ], 'second' => [ 'model' => [ // ... ], 'adapter' => Lauthz\Adapters\DatabaseAdapter::class, // ... ], ];
Затем выберите, какое лицо, принимающее решения, использовать:
Enforcer::guard('second')->enforce("eve", "articles", "edit");
Командная строка ремесленника
Ты можешь быть там. Консоль
Используйте ремесленник
Политика создания команд:
Добавить политику для пользователя:
php artisan policy:add eve,articles,read
Чтобы добавить политику в роль:
php artisan policy:add writer,articles,edit
Назначьте роли пользователям:
php artisan role:assign eve writer
кэш
кэш Для предоставления авторизации
Правила могут повысить производительность. По умолчанию они отключены.
В ларавеле config/lauthz.php
Для настройки собственной конфигурации кэша:
'cache' => [ // changes whether Lauthz will cache the rules. 'enabled' => false, // cache store 'store' => 'default', // cache Key 'key' => 'rules', // ttl \DateTimeInterface|\DateInterval|int|null 'ttl' => 24 * 60, ],
Последний
Кабина
Адрес проекта: https://github.com/php-caspin/php-caspin
Авторизация Laravel
Адрес проекта: https://github.com/php-caspin/laravel-authz
Вы можете просмотреть Документы кабины
Кабины