Защитите маршруты Laravel 12 API с помощью промежуточного программного обеспеченияPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Защитите маршруты Laravel 12 API с помощью промежуточного программного обеспечения

Сообщение Anonymous »

У меня есть спа -салон в Laravel 12, используя Vue и Sanctum для Auth.

Код: Выделить всё

public function handle(Request $request, Closure $next): Response
{
abort_if(Gate::denies('admin_access'), 403);
return $next($request);
}
< /code>
У меня есть еще одно промежуточное программное обеспечение, которое инициализации Gates < /p>
authgates.php
public function handle(Request $request, Closure $next): mixed
{
$user = auth()->user();

if ($user) {

$roles = Role::with('permissions')->get();
$permissionsArray = [];
foreach ($roles as $role) {
foreach ($role->permissions as $permission) {
$permissionsArray[$permission->title][] = $role->id;
}
}

foreach ($permissionsArray as $title => $roles) {
Gate::define($title, function (User $user) use ($roles) {
return count(array_intersect($user->roles->pluck('id')->toArray(), $roles)) > 0;
});
}
}
return $next($request);
}
Промежуточное программное обеспечение инициализировано в Bootstrap/app.php

Код: Выделить всё

...
->withMiddleware(function (Middleware $middleware) {
$middleware->appendToGroup('api', [
AuthGates::class,
]);
$middleware->append(Admin::class);
$middleware->statefulApi();
})
...
Я установил Admin для защиты этих маршрутов:

Код: Выделить всё

Route::middleware('auth:sanctum')->group(function () {
...
Route::prefix('admin')->group(function () {
Route::prefix('users')->group(function () {
Route::get('/', [AdminUserController, 'index']);
...
});
})->middleware(Admin::class);

});
< /code>
Проблема в том, что я бы сделал, я получаю 403 | Запрещено 
Как я могу защитить маршруты/api/admin/*
от вызванных, если у пользователя Auth нет этого разрешения admin_access

Подробнее здесь: https://stackoverflow.com/questions/797 ... middleware
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»