我一直在Yii上开发一个facebook应用程序,在验证后我想根据facebook用户名和id设置用户名和id。因为我是Yii的新手我不知道该怎么做。虽然当我试图在我的UserIdentity类中设置用户ID时,它给出了一个错误说
Property "UserIdentity.id" is read only.
还有其他办法吗?
答案 0 :(得分:2)
您现在使用什么进行身份验证?如果您设置了webapp,则应该在扩展CUserIdentity的组件中具有UserIdentity类。这通常是您使用setState()的地方,例如$this->setState('first_name', $record->first_name);
,以便在身份验证后从db记录中设置用户的名字,例如,您可以通过Yii::app()->user->first_name
但是,我认为您可能正在寻找的是Yii::app()->user->name = 'newname';
,它会更改CUserIdentity在使用CUserIdentity :: username值进行身份验证期间设置的CWebUser属性。
任一选项都可以 - 设置自定义Yii :: app() - > user->值或重置Yii :: app() - > user->名称值,以最适合您的方式为准应用程序。 (我不会重置用户 - > id值tho。)
答案 1 :(得分:1)
DroidUser的帖子确实有助于更好地理解CUserIdentity类。虽然当我在Yiiroot / framework /中打开CUserIdentity.php时,发现只有用于读取id和用户名的getter方法已经在那里定义但是没有设置它们。
public function getId()
{
return $this->username;
}
public function getName()
{
return $this->username;
}
并且他们都返回你登录的用户名,虽然我发现了一个CWebUser类,它也被IUserIdentity扩展。 在这里你可以使用
Yii::app()->user->setState('name',$value)
实际设置一个字段并为其分配一些值,并使用类似的getState方法来读取它。 我认为这将解决我的问题,因为我想要做的是将一些用户标识值存储在系统范围的可访问变量中。 有什么建议吗?