Bouncer: 一个更好的 Laravel 权限的管理

JellyBool

JellyBool

在很在之前,我推荐过一个 roles Package,不过今天还是得再向大家推荐一个新的权限管理 Package:Bouncer。

Github 地址:https://github.com/JosephSilber/bouncer 。此地址附有详细的安装和配置过程。下面将简单说一下此 Package 的好处。

API 友好

非常友好的链式 API 操作,我们可以直接这样:

Bouncer::allow('admin')->to('ban-users');

这样就给 admin 这个角色有 ban-users 这个权限操作了。

自动检测

你给一个用户添加一个角色的时候,如果出现角色不存在,Bouncer 会自动为你创建新的角色

$user->assign('admin');

你可以毫不担心地这样用。

中间件式权限管理

比如你想在创建或者更新文章的时候需要检验用户的权限,你可以这样:

Route::get('/posts/{post}', 'PostsController@show')
->name('post.update')
->middleware('can:update,post');

这样就可以直接实现对 Post 的权限验证,如果验证不过,就会抛出一个 403 Forbidden
Response

Laravel 原生支持

当然,说到这方面的权限控制,必然离不开 Laravel 的 can 方法了,在使用 Bouncer
的情况下,你依然还是可以使用原生的远方,比如这样:

@can ('update', $post)
<a href="{{ route('post.update', $post) }}">
编辑文章
</a>
@endcan

总结

在 Laravel 实现权限管理的时候,可以直接使用 Laravel 自带的体式的,但是针对一些更复杂
的项目需求,你也是可以考虑一下像 Bouncer 一样的 Package。

最后

别忘了关注 codecasts,不定期送书和定期更文章!

本文由 JellyBool 创作, 转载和引用遵循 署名-非商业性使用 2.5 中国大陆 进行许可。

共有 0 条评论