РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
507 of 1392 menu

Метод authorize

Метод authorize применяется в контроллерах Laravel для проверки авторизации пользователя перед выполнением действия. Первым параметром передаётся имя действия (метод политики), вторым - модель или идентификатор ресурса. Если проверка не пройдена, метод выбрасывает исключение AuthorizationException, которое автоматически обрабатывается Laravel и возвращает ответ с кодом 403. Метод удобно использовать в конструкторе или непосредственно в методах контроллера.

Синтаксис

<?php $this->authorize($ability, $arguments); ?>

Параметры метода authorize:

  • $ability - строка, имя метода политики (например, 'view', 'update', 'delete');
  • $arguments - модель, идентификатор или массив аргументов для политики.

Пример

Давайте проверим, может ли пользователь просматривать статью с id равным 1:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function show(Request $request, $id) { $article = Article::findOrFail($id); $this->authorize('view', $article); return view('article.show', ['article' => $article]); } } ?>

Результат выполнения кода:

"Article view rendered successfully"

Пример

Давайте проверим, может ли пользователь обновлять статью, используя идентификатор вместо модели:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function update(Request $request, $id) { $this->authorize('update', [Article::class, $id]); $article = Article::findOrFail($id); $article->update($request->all()); return redirect()->route('articles.index'); } } ?>

Результат выполнения кода:

"Redirected to articles index"

Пример

Проверим авторизацию в конструкторе контроллера для всех методов, кроме указанных:

<?php namespace App\Http\Controllers; use App\Models\Post; class PostController extends Controller { public function __construct() { $this->authorize('viewAny', Post::class); } public function index() { $posts = Post::all(); return view('posts.index', ['posts' => $posts]); } } ?>

Результат выполнения кода:

"Posts index view rendered successfully"

Пример

Используем метод authorize с несколькими аргументами для сложной проверки:

<?php namespace App\Http\Controllers; use App\Models\Comment; use App\Models\Article; class CommentController extends Controller { public function destroy($articleId, $commentId) { $article = Article::findOrFail($articleId); $comment = Comment::findOrFail($commentId); $this->authorize('delete', [$article, $comment]); $comment->delete(); return redirect()->back(); } } ?>

Результат выполнения кода:

"Redirected back to previous page"

Смотрите также

  • метод middleware,
    который назначает посредников на методы контроллера
  • метод validate,
    который проверяет входящие данные запроса
  • метод user,
    который получает текущего аутентифицированного пользователя
  • класс ValidateCsrfToken,
    который проверяет CSRF-токен запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить