【问题标题】:Access rules restriction in yiiyii 中的访问规则限制
【发布时间】:2015-03-05 06:20:15
【问题描述】:

在我的帐户模型中,我有一个名为 account_type_id 的属性 在注册时,如果用户选择他的帐户作为管理员帐户,则设置为 1,如果用户只是普通用户,则设置为 2 如何更改访问规则,以便只有设置为 1 的访问规则才能更新或删除?

这是我的代码示例

 public function accessRules()
{
    $account=Account::model()->FindAll();
    return array(
        array('allow',  // allow all users to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('*'),
        ),
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create'),
            'users'=>array('@'),
        ),
        array('allow',
            'action'=>array('update', 'delete', 'admin'),
            'expression'=>"{$account->account_type_id}==1",
            ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

【问题讨论】:

  • 您想为新用户类型添加更新和删除规则吗?
  • 您现在有什么问题? {$account->account_type_id}==1 不工作?

标签: php yii access-rules


【解决方案1】:

我认为你的代码有一个问题:你的$account 是一个对象数组,所以你不能使用$account->account_type_id。这没有任何意义。用户表应该有一个account_type_id 字段。因此,您可以在应用程序的任何位置访问登录用户的 account_type_id。 你可以试试这个:

array('allow',
        'action'=>array('update', 'delete', 'admin'),
        'expression'=> array('AccessControl','allowAdminOnly'),
        ),

然后您需要在该类中定义AccessControl 类和allowAdminOnly 函数。 AccessControl 可以在任何地方,例如在您的扩展文件夹中。注意allowAdminOnly muse 返回真或假。 AccessControl 应该是这样的:

class AccessControl{

   public function allowAdminOnly()
   {
      if(Yii::app()->user->account_type_id == 1)
        return true;
      else
        return false;
   }
}

【讨论】:

  • 只是一个问题,我真的需要将 account_type_id 转移到用户表吗?
  • 是的,您应该将该字段添加到用户表中,并将其引用添加到 user_id 字段。
【解决方案2】:

您可能需要实现类似 wikione 的东西

所以你的访问规则看起来像这样:

// for access rules
return array(
      array('allow', 
        'actions'=>array('update','delete','admin'),
        'expression'=>'$user->isAdmin()'
      ),
// ...

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多