Sitecore外联网检查在HttpHandler中记录了用户角色

时间:2012-03-04 16:45:47

标签: c# sitecore roles sitecore6 extranet

如何在sitecore 6.4中获取经过身份验证的登录外联网用户的角色?我正在尝试检查角色以限制访问。

Sitecore.Context.User.Roles将返回默认\ Anonynous而非extranet \ WebsiteUser。

更新:在登录后直接检查角色时,所有内容都显示正常。但是,当我从httphandler中检查角色时,Sitecore.Context.User.Roles会丢失并默认为默认\ Anonynous。

创建外联网用户代码:

using (new SecurityStateSwitcher(SecurityState.Disabled))
        {
            var domainUsername = Context.Domain.GetFullName(user.Email);
            Sitecore.Security.Accounts.User sitecoreUser = Sitecore.Security.Accounts.User.Create(domainUsername, user.Password);

            Database dbCore = Factory.GetDatabase("core");
            Item profileItem = dbCore.GetItem(CustomUserProfilePath);

            List<Role> roles = Sitecore.Context.Domain.GetRoles().Where(role => role.Name == "extranet\WebsiteUser").ToList();
            if (roles.Any())
            {
                sitecoreUser.Roles.Add(roles.First());
            }

            sitecoreUser.Profile.ProfileItemId = profileItem.ID.ToString();
            sitecoreUser.Profile.FullName = string.Format("{0} {1}", user.FirstName, user.LastName);
            sitecoreUser.Profile.Email = user.Email;
            sitecoreUser.Profile.Comment = "Created by the register system";
            sitecoreUser.Profile.Save();
        }

1 个答案:

答案 0 :(得分:0)

我现在通过使用IIS7 url重写找到了一个解决方案,而不是通过web.config路由处理程序。这保留了Sitecore.Context,以便我可以检查登录的用户角色。