2

根据 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!
4

2 回答 2

1

因为你的“编辑设置”门总是返回一个布尔值,所以 Gate::after 不会被调用。

这篇文章可以提供帮助。

于 2021-09-22T12:31:47.460 回答
0
  1. 如果您的 Laravel < 5.7,则可能会出现这种行为
  2. 您未经授权处理请求
  3. Gate::after(function ($user = null, $ability = null, $result = null, $arguments = null)- 参数不应为空。我认为这可能会导致此错误
于 2020-10-06T13:40:46.510 回答