我在用户个人资料上有一个字段,该字段对应于另一个系统中的id。我想在用户访问激活链接时设置此项。在其他系统中注册用户后,我添加一个角色并将其成员资格批准设置为true。我收到一个错误,说我无法设置匿名用户的属性,所以我移动了在角色/激活部分之后分配id但我仍然遇到相同的错误。
private bool SetCustomId(string username, Guid id)
{
var userProfile = ((User)User.FromName(username, AccountType.User)).Profile;
userProfile.SetCustomProperty("MyIdField", id.ToString());
userProfile.Save();//error thrown here
}
用户个人资料是我所期望的,当我在为用户分配角色的部分之后移动它时,他们确实具有我期望的角色。
以下是实际例外:This property cannot be set for anonymous users.
答案 0 :(得分:4)
请尝试使用User.FromName(username, true)
。 boolean参数告诉它将用户视为已验证。
答案 1 :(得分:3)
您需要初始化用户,请尝试以下代码:
userProfile.Initialize(username, true);
答案 2 :(得分:0)
试试这个:
private bool SetCustomId(string username, Guid id)
{
using(new Sitecore.Security.Accounts.UserSwitcher(Sitecore.Security.Accounts.User.FromName(username,false));)
{
var userProfile = ((User)User.FromName(username, AccountType.User)).Profile;
userProfile.SetCustomProperty("MyIdField", id.ToString());
userProfile.Save();
}
}