2020-06-03 17:42:04 1516次浏览 3条回答 0 悬赏 50 金钱

当 GET 请求列表接口的时候,比如 http://localhost/users 如果后面不加filter参数,我要查询符合一个标志位的用户列表呢,因为想过滤被封禁的用户不显示出来,只能用 http://localhost/users?filter[status]=1 这种方式吗?感觉很不合理,因为用户去除掉filter之后就能看到我所有的用户,这是我不愿意看到的,怎么才能直接过滤呢,求指导!

  • 回答于 2020-06-04 08:39 举报

    你直接在where条件里把已经禁用的列表不展示就可以了吧。

    或者拆解为两个接口,一个需要权限一个不需要权限,不需要权限的只供非私密数据。

    需要权限的就不需要登录,且登陆者的权限也要达到要求。

    2 条回复
    回复于 2020-06-04 10:41 回复

    我使用的是自带的代码 yii\rest\IndexAction,没有自己手写方法,如果手写方法肯定可以解决,现在就是想知道使用 https://www.yiichina.com/doc/guide/2.0/rest-quick-start权威指南中 GET /users: 逐页列出所有用户,怎么在不加url参数的情况下,服务端进行过滤

    回复于 2020-06-04 13:16 回复

    通过权限控制咯,获取当前用户token来获取用户信息,取用户信息中的角色权限获取对应权限数据

  • 回答于 2020-06-09 02:29 举报

    覆盖 index方法不就行了吗? 再怎么也不要全部使用自带的牙!

  • 回答于 2020-06-09 17:59 举报
    // models/UserQuery.php
    
    class UserQuery extends \yii\db\ActiveQuery
    {
        public function init()
       {
          parent::init();
          $this->andWhere(['status' => 1]);
       }
    }
    
    // models/User.php
    
    class User extends \yii\db\ActiveRecord
    {
        public static function find()
       {
          return new UserQuery(static::class);
       }
    }
    
    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
bryce
见习主管

bryce

注册时间:2014-01-13
最后登录:2022-12-30
在线时长:20小时47分
  • 粉丝8
  • 金钱175
  • 威望0
  • 积分375

热门问题