授权

作者: 独步天堂 | 来源:发表于2017-12-10 11:12 被阅读15次

    授权

    授权策略

    必须 使用 授权策略 类来做用户授权。

    使用基类

    所有 Policy 授权策略类 必须 继承 app/Policies/Policy.php 基类。基类文件如下:

    <?php
    
    namespace App\Policies;
    
    use Illuminate\Auth\Access\HandlesAuthorization;
    
    class Policy
    {
        use HandlesAuthorization;
    
        public function __construct()
        {
            //
        }
    
        public function before($user, $ability)
        {
            if ($user->isAdmin()) {
                return true;
            }
        }
    }
    

    授权策略命名

    Policy 授权策略类 必须 遵循 资源路由 方式进行命名,photos 对应 /app/Policies/PhotoPolicy.php

    类文件参考

    Policy 授权策略类文件内容请参考以下:

    <?php
    
    namespace App\Policies;
    
    use App\Models\User;
    use App\Models\Photo;
    
    class PhotoPolicy extends Policy
    {
        public function update(User $user, Photo $photo)
        {
            return $user->isAuthorOf($photo);
        }
    
        public function destroy(User $user, Photo $photo)
        {
            return $user->isAuthorOf($photo);
        }
    }
    
    

    自动判断授权策略

    应该 使用 自动判断授权策略方法,这样控制器和授权类的方法名就统一起来了。

    /**
     * 更新指定的文章。
     *
     * @param  int  $id
     * @return Response
     */
    public function update($id)
    {
        $post = Post::findOrFail($id);
    
        // 会自动调用 `PostPolicy` 类中的 `update` 方法。
        $this->authorize($post);
    
        // 更新文章...
    }
    

    相关文章

      网友评论

          本文标题:授权

          本文链接:https://www.haomeiwen.com/subject/rnimixtx.html