使用策略授权操作

通过用户模型

Laravel User 模型包含两种使用 Policies 帮助授权的方法; cancan'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 responseAuthorizationException

pubic function show($id)
{
    $content = Content::find($id);

    $this->authorize('view', $content);
        
    /* user can view content */
}