例如,我有一个名为 Entity 的模型和一个名为 User 的模型。每个实体 BELONGS_TO 单个用户。建立关系的完美案例。
仍然用户包含一些敏感数据,如密码。在请求带有用户的实体时,如何防止加载这些数据?
P.S。我理解设计分离身份验证数据和公开数据的数据库模式会更好。例如。在用户模型中存储密码,在配置文件模型中存储用户名。我的问题仍然是如何在现有案例中保持安全。
答案 0 :(得分:2)
我认为可以使用这样的东西:
public function relations()
{
return array(
'user' => array(self::BELONGS_TO,'User','id_field','select'=>'name,surname,otherfield1,field2'),
);
}
<强>更新强>
如果您想要限制用户模型中的字段,可以尝试使用defaultScope
结合使用scenarios来确定何时可以选择所有字段。
public function defaultScope()
{
if ( $this->scenario != 'yourScenario' ) {
return array(
'select'=>"name,surname,otherfield1,field2",
);
} else {
return array();
}
}