在很在之前,我推荐过一个 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
,不定期送书和定期更文章!