Database Yii:防止通过关系加载敏感数据
例如,我有一个名为Entity的模型和一个名为User的模型。每个实体都属于一个用户。建立关系的完美案例 用户仍然包含一些敏感数据,如密码。当向用户请求实体时,如何防止加载这些数据Database Yii:防止通过关系加载敏感数据,database,security,yii,relationship,Database,Security,Yii,Relationship,例如,我有一个名为Entity的模型和一个名为User的模型。每个实体都属于一个用户。建立关系的完美案例 用户仍然包含一些敏感数据,如密码。当向用户请求实体时,如何防止加载这些数据 另外,我知道最好设计数据库模式,将身份验证数据和公共可用数据分开。例如,在用户模型中存储密码,在配置文件模型中存储用户名。我的问题仍然是如何在这种情况下维护安全。我认为可以使用类似的方法: public function relations() { return array( 'us
另外,我知道最好设计数据库模式,将身份验证数据和公共可用数据分开。例如,在用户模型中存储密码,在配置文件模型中存储用户名。我的问题仍然是如何在这种情况下维护安全。我认为可以使用类似的方法:
public function relations()
{
return array(
'user' => array(self::BELONGS_TO,'User','id_field','select'=>'name,surname,otherfield1,field2'),
);
}
更新
如果您想限制用户模型中的字段,可以尝试使用defaultScope
结合使用来确定何时可以选择所有字段
public function defaultScope()
{
if ( $this->scenario != 'yourScenario' ) {
return array(
'select'=>"name,surname,otherfield1,field2",
);
} else {
return array();
}
}
可能有效,但这意味着具有此关系的每个模型都要负责安全问题。在用户模型中是否有这样做的方法。例如,限制加载密码字段,除非其他型号明确要求?