Я слежу за этим учебным пособием, который является отличным и имеет один вопрос.Реализация авторизации на основе ролей в Yii Framework
http://www.larryullman.com/2010/01/07/custom-authentication-using-the-yii-framework/
я могу получить доступ к свойству роли, как это, в любом месте в моем коде приложения:
Yii::app()->user->role
, но то, что я действительно хотел бы сделать, это использовать авторизацию контроллера по умолчанию в моем UserController :
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('*'),
'users'=>array('@'),
// Fails
'roles'=>array(ModelConstantsRole::ADMIN),
// Also Fails
'expression'=>'(isset(Yii::app()->user->role) && (Yii::app()->user->role==ModelConstantsRole::ADMIN))',
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
оказывается, что класс, который на самом деле проверяет правила, определенные в accessRules самом деле не знает ничего о своем г оле, что я назначил его. CAccessControlFilter (для тех из вас, кто не хочет его искать в течение 40 минут XD).
Любые идеи о том, как я могу использовать метод accessRules, когда я совмещаю его с подходом Ларри?
Спасибо!
Если вам нужны разъяснения или если мой ответ неполный для вас, пожалуйста, прокомментируйте –
прочитайте мое редактирование, если вы не используете rbac, тогда вы можете использовать выражение 'вместо" role ", и выражение, которое вы определили, выглядит отлично.но вам все равно нужно удалить/изменить свою опцию 'action', как уже упоминалось в моем ответе. –
Это выглядит как отличный ответ, особенно со ссылкой на документы о том, как нет такой вещи, как «actions» => array ('*'). Я проверю это завтра утром, когда вернусь к своему компьютеру, и если все будет работать, я приму свой ответ! –