将SitecoreUser.Profile与表单身份验证一起使用

时间:2016-05-16 06:47:38

标签: sitecore sitecore8

我们使用sitecore来管理我们的注册用户(Extranet域),在创建新的虚拟用户时,我们使用Profile.Email属性向其发送电子邮件,然后调用Profile.Save()方法。 其他地方的另一个属性读取userProfile.Email,一切都很好。 另外,我们使用表单身份验证和记住我功能。 问题是当我们关闭浏览器并重新打开它时Sitecore.Context.User包含有关点击的实际用户的信息,但是User.Profile总是将电子邮件设为空。 我尝试了Reload()initialize()他们无法正常工作。我还尝试通过用户名(User.FromName())再次获取用户,但返回的用户对象也没有配置文件电子邮件。

做错了什么?

1 个答案:

答案 0 :(得分:2)

Security API Cookbook中有一个非常重要的评论。它与Sitecore 6有关,但据我所知它应该与Sitecore 8一起使用,因为安全模型没有重大变化。它适用于Sitecore 7

  

重要只有在为其分配角色配置文件属性后,才能登录虚拟用户。登录后分配的角色和配置文件属性将在后续请求时丢失。

Sitecore.Security.Accounts.User user =
Sitecore.Security.Authentication.AuthenticationManager.BuildVirtualUser(@"domain\user"
, true);
if (user != null)
{
 string domainRole = @"domain\role";
 if (Sitecore.Security.Accounts.Role.Exists(domainRole))
 {
 user.Roles.Add(Role.FromName(domainRole));
 }

 user.Profile.Email = "user@domain.com";
 user.Profile[“Custom Property”] = “Custom Value”;
 user.Profile.Save();
 Sitecore.Security.Authentication.AuthenticationManager.LoginVirtualUser(user);
}