使用策略授权操作
通过用户模型
Laravel User 模型包含两种使用 Policies
帮助授权的方法; can
和 can't
。这两个可以分别用于确定用户是否具有模型授权。
要检查用户是否可以查看内容,你可以执行以下操作:
if($user->can('view', $content)){
/* user can view content */
}
OR
if($user->cant('view', $content)){
/* user cannot view content */
}
通过中间件
Route::get('/contents/{id}, function(Content $content){
/* user can view content */
})->middleware('can:view,content');
通过控制器
Laravel 提供了一个名为 authorize
的辅助方法,它将策略名称和相关模型作为参数,并根据你的授权逻辑授权操作或拒绝操作并抛出一个由 Laravel Exception 处理程序转换为 403 HTTP response
的 AuthorizationException
。
pubic function show($id)
{
$content = Content::find($id);
$this->authorize('view', $content);
/* user can view content */
}