2

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

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

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

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

外网\用户

4

1 回答 1

0

我认为您可以为每个“外联网”创建一个外联网角色,例如。站点 1 管理员。

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

这是 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
        }

    }
}

这有点简单,基于我尝试从一些工作代码中破解的一些代码,这些代码创建了一个用户并让他登录,并且应该根据你正在做的事情进行调整,因为可能存在一些错误。

于 2011-03-30T18:24:59.220 回答