Gate :: before () не вызывается в Laravel 5.7

Gate::before не вызывается, хотя в моем шаблоне лезвия есть аннотация @can.

Я написал обратный вызов before внутри AuthServiceProvider. Я проверил gate::after, он работает нормально.

namespace App\Providers;

use Illuminate\Support\Facades\Gate;
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 authentication / authorization services.
    */
    public function boot()
    {
        $this->registerPolicies();

        Gate::before(function ($user, $ability) {
            die('before called');
        });
    }
}

Почему нельзя называть Gate::before?

В документации Laravel говорится, что The before method of a policy class will not be called if the class doesn't contain a method with a name matching the name of the ability being checked.

Pourbahrami 19.11.2018 14:23

Вы зарегистрировали какие-либо ворота или полисы?

Jonas Staudenmeir 19.11.2018 14:49

Пользователь вошел в систему?

Jonas Staudenmeir 19.11.2018 14:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
1 663
1

Ответы 1

Проверьте свою политику авторизации для промежуточного программного обеспечения. Конкретно:

'middleware' => ['web', 'admin.verify']

Подробнее о средстве авторизации Laravel: https://laravel.com/docs/5.7/authorization#via-middleware

По ссылке:

Laravel includes a middleware that can authorize actions before the incoming request even reaches your routes or controllers. By default, the Illuminate\Auth\Middleware\Authorize middleware is assigned the can key in your App\Http\Kernel class.

use App\Post;

Route::put('/post/{post}', function (Post $post) {
    // The current user may update the post...
})->middleware('can:update,post');

Попробуйте переключить эти настройки.

Другие вопросы по теме