Laravel 8 授权动作
使用 Gate 来授权动作的时候, 你应该使用 allows
或者 denies
方法。 注意,不需要将当前已认证用户传递给这些方法。 Laravel 会自动处理好已经认证通过的用户,然后传递给 Gate 闭包函数:
if (Gate::allows('edit-settings')) {
// 指定当前用户可以编辑设置
}
if (Gate::allows('update-post', $post)) {
// 指定当前用户可以进行更新...
}
if (Gate::denies('update-post', $post)) {
// 指定当前用户不能更新...
}
如果你想判断一个特定的用户是否已经被授权访问某个动作, 你可以使用在 Gate
在 facade 的 forUser
方法:
if (Gate::forUser($user)->allows('update-post', $post)) {
// 用户可以更新...
}
if (Gate::forUser($user)->denies('update-post', $post)) {
// 用户不能更新...
}
您可以使用 any
或 none
方法一次授权多个操作:
if (Gate::any(['update-post', 'delete-post'], $post)) {
// 用户可以更新或删除
}
if (Gate::none(['update-post', 'delete-post'], $post)) {
// 用户不能更新或删除
}