Gate::after(): возврат ненулевого значения не изменяет результат авторизации
Согласно официальной документации laravel,
если обратный вызов after возвращает ненулевой результат, этот результат будет считаться результатом проверки.
Но когда я объявляю после обратного вызова и перезаписываю значение как false, он все равно возвращает предыдущее значение.
Что мне не хватает? Как переопределить значение в Gate::after?
Gate::define('edit-settings', function ($user = null) {
return true;
});
Gate::after(function ($user = null, $ability = null, $result = null, $arguments = null) {
return false; //this have no effect
});
// ------------
Gate::allows('edit-settings'); // return true!
2 ответа
потому что ваши ворота 'edit-settings' всегда возвращают логическое значение, поэтому Gate:: after не вызывается.
- Такое поведение может быть, если у вас есть Laravel < 5.7
- Вы обрабатываете запрос без авторизации
Gate::after(function ($user = null, $ability = null, $result = null, $arguments = null)
- params не должно быть нулевым. Я думаю, это может вызвать эту ошибку