如何在 yii 权限模块中创建用户?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何在 yii 权限模块中创建用户?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何授予用户在 phpmyadmin(cPanel) 中创建数据库的权限?

各位高手,请问,在oracle中创建的用户都分配哪些权限?一般分配哪些权限?

如何在MySQL中创建数据库及添加用户并授权用户

如何在 yii 中创建访问(查看页面)角色?

如何在ubunto系统中创建普通用户并具有管理员权限

PHP:在 yii 中创建更高级别的查询语言以创建条件过滤器的最佳方法是啥