我已关注http://www.larryullman.com/2010/01/04/simple-authentication-with-the-yii-framework/使用数据库创建登录系统 但登录后尝试访问管理页面我得到了
Error 403 You are not authorized to perform this action
public function accessRules() { 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(), 'users'=>array('@'), ), array('allow', // allow admin user to perform 'admin' and 'delete' actions 'actions'=>array('admin','delete','create','update' ), // 'users'=>array('admin'), 'expression'=>'isset($user->role) && ($user->role==="admin")', ), array('deny', // deny all users 'users'=>array(''), ), ); }
答案 0 :(得分:0)
1 - 确保您的accessRules()允许管理员操作到& (已登录),并且它是所有其他规则的最重要的,或者至少只是在DENY ALL RULE之上。不要误解我的意思,不要总是在所有其他规则之上,但书中的默认最后一条规则是拒绝*,所以如果你把你的管理规则放在它下面,你就不会有有机会访问行动管理员。
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view', 'checkout'),
'users'=>array('*'),
)
);
}
2 - 如果您已正确更新accessRules(),则需要检查以确保您用于登录的帐户是有权访问管理页面的用户。此操作显然在任务用户管理中,并分配给角色所有者。因此,用户必须是您当前正在浏览的项目的所有者。从数据库中选择以确保它。