【问题标题】:how to create users in yii rights module?如何在 yii 权限模块中创建用户?
【发布时间】:2014-10-15 09:48:40
【问题描述】:

我已经在 yii 中安装了权限模块。我还创建了用户角色和操作。但它不起作用。我想知道在哪里为角色创建用户?

【问题讨论】:

    标签: yii yii-extensions


    【解决方案1】:

    根据您的风格,只需粘贴此“用户/管理员/创建”。

    look like http://url/index.php?r=user/admin/create
    

    现在在查看页面上,您可以使用

    获取数据库的所有角色
    $all_roles=new RAuthItemDataProvider('roles', array( 
    'type'=>2,
    ));
      $data=$all_roles->fetchData();
    

    然后使用它创建一个下拉列表。你可以根据你的角色创建用户

    <div>
        <label for="type_id">Type</label>
        <?php echo CHtml::dropDownList("Type",'',CHtml::listData($data,'name','name'));?    > 
    </div>
    

    并在你的控制器中分配它

    $authorizer = Yii::app()->getModule("rights")->authorizer;
    

    $authorizer->authManager->assign($type, $model->id);

    【讨论】:

      【解决方案2】:

      您为用户创建角色,反之亦然(或者至少这是我的方法,如果您想与之合并)。

      角色可以看这个问题:redirect Access rules with Yii

      最好的方法是使用在 Yii 框架中定义的 CAccessControlFilter 类,并通过你的角色/授予访问类来扩展它。

      您的 preFilter 方法将如下所示:

      protected function preFilter($filterChain)
          {
              $app=Yii::app();
              $request=$app->getRequest();
              $user=$app->getUser();
              $verb=$request->getRequestType();
              $ip=$request->getUserHostAddress();
      
              foreach($this->getRules() as $rule)
              {
                  if(($allow=$rule->isUserAllowed($user,$filterChain->controller,$filterChain->action,$ip,$verb))>0) // allowed
                      break;
                  elseif($allow<0) // denied
                  {
                      if(isset($rule->deniedCallback))
                          call_user_func($rule->deniedCallback, $rule);
                      else
                          $this->accessDenied($user,$this->resolveErrorMessage($rule));
                      return false;
                  }
              }
      
              return true;
          }
      

      您的 WebUser 类将如下所示:

      class WebUser extends CWebUser {
      
        // Store model to not repeat query.
        private $_model;
      
      
        // access it by Yii::app()->user->name
        function getName(){
          $user = $this->loadUser(Yii::app()->user->id);
          return $user['Name'];
        }
      
      
        // access it by Yii::app()->user->isAdmin()
        function isAdmin(){
          $user = $this->loadUser(Yii::app()->user->id);
          return intval($user['Type']) == 4;
        }
      
        function isEditor(){
          $user = $this->loadUser(Yii::app()->user->id);
          return intval($user['Type']) == 3;
        }
      
        function isOrganizer(){
          $user = $this->loadUser(Yii::app()->user->id);
          return intval($user['Type']) == 2;
        }
      
        function isNormal(){
          $user = $this->loadUser(Yii::app()->user->id);
          return intval($user['Type']) == 1;
        }
      
        // Load user model.
        protected function loadUser($id=null)
          {
              if($this->_model===null)
              {
                  if($id!==null)
                      $this->_model=User::model()->findByPk($id);
              }
              return $this->_model;
          }
      }
      

      我在我的一个大学项目中成功使用了它https://github.com/RazvanADumitru/EventsPlanning

      【讨论】:

        猜你喜欢
        • 2014-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 2014-10-10
        • 2021-09-18
        相关资源
        最近更新 更多