如何仅为管理员用户启用数据库分析?如果我在 config 中静态定义它,应用程序还不知道用户是否是管理员。
答案 0 :(得分:1)
作为建议,在控制器中你可以这样做:
public function init(){
$role=Rbac::role(Yii::app()->user->id);
if($role=="admin"){
Yii::app()->db->enableProfiling=true;
}
return parent::init();
}
请注意,我假设我们有一个名为Rbac
的类,它有一个按用户ID(role()
)获取用户角色的方法。
此外,如果您有一个模块,您可以将其检入与控制器相同的init()
方法。即使您有基本控制器类,也可以这样做。您也可以在控制器beforeAction()
方法中执行此操作,如果您需要跳过某些特定操作。
为了更加优雅,您可以创建behavior
并将其附加到控制器或将其放在preload
配置文件中。
另一种方法是在用户登录UserIdentity
类进程时执行此操作,以设置启用性能分析的状态,或者在内联登录成功后执行此操作。