Sitecore外联网管理员?

时间:2011-03-30 09:06:00

标签: sitecore sitecore6 extranet

您好 我正在开发一个具有多个站点的应用程序,每个站点都有自己的外联网,这一切都运行得很好,使用Sitecore 6.4。

现在我需要每个站点的编辑者(而不是管理员)才能创建只能访问连接到站点的外联网的外联网用户,这是否可能?

基本上我正在寻找这样的结构:

Sitecore \ Editor(本地外联网管理员)

外联网\用户

1 个答案:

答案 0 :(得分:0)

我认为你可以为每个“外联网”制作外联网角色,例如。 Site1Admin。

然后创建一个页面,使他们能够创建用户,为该用户提供所需的基本角色。

这是Sitecore 6.0的代码,但6.4 afaik应该是相同的:

Sitecore.Security.Accounts.User user;
if (!Sitecore.Context.IsLoggedIn)
{
    string domainUser = Sitecore.Context.Domain.GetFullName("youruser");
    string txtPassword = "yourpass";
    string txtEmail = "youremail";

    if (Sitecore.Security.Accounts.User.Exists(domainUser))
        return;

    MembershipCreateStatus status;
    Membership.CreateUser(domainUser, txtPassword, txtEmail, "Never?", "Always!", true, out status);

    if (!status.Equals(MembershipCreateStatus.Success))
    {
        throw new MembershipCreateUserException(status.ToString());
    }       
    user = //something to load the user, probably in Sitecore.Security.Accounts.User
}
    var role = "extranet\\Site1User";   

    var roles = Roles.GetRolesForUser(); //this is probably only for the current context user
    if (!roles.Contains(role))
    {
        try
        {
            Roles.AddUsersToRole(new string[] { "youruser" }, role);
        }
        catch(System.Configuration.Provider.ProviderException)
        {
            // do nothing, just move on
        }

    }
}

这有点简单,基于我试图通过一些工作代码一起破解的一些代码,创建了一个用户并登录并应该调整到你正在做的事情,因为可能存在一些错误。