在 Yii 中,有没有一种最好的方法来确保用户只能在 Yii 中查看和访问他们自己的数据?
我认为管理员应该能够看到任何东西,但现在,我稍后会越过那座桥。
谢谢
在 Yii 中,有没有一种最好的方法来确保用户只能在 Yii 中查看和访问他们自己的数据?
我认为管理员应该能够看到任何东西,但现在,我稍后会越过那座桥。
谢谢
查看范围。默认范围将是您的朋友: http ://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes
因为 defaultScopes 数组在函数内部,你也可以做有条件的默认作用域:
public function defaultScope()
{
$t=$this->getTableAlias(false,false);
if(Yii::app()->user->notAdmin()) {
return array(
'condition'=>"$t.<column_name> = :<columnName>",
'params'=>array(':<columnName>'=>Yii::app()->user->notAdmin),
);
}
else return array();
}
编辑:请注意,如果您不小心,这可能会给您带来麻烦。有关更多信息,请参阅Yii 网站上的这个问题。
Yii 不可能为你做这件事,你会自己做,但这很简单。
您可以考虑范围,或查看关系并将它们全部基于当前用户。例如,要获取用户的所有帖子,您可以执行以下操作:
$posts = Post::model()->findAll(); //WRONG
$posts = Yii::app()->user->posts(); //RIGHT (Should define the relation in the User model)