2011-03-30 118 views
2

嗨 我使用多个站点开发应用程序,每个站点都有自己的Extranet,而且这些工作都非常精美,使用Sitecore 6.4。Sitecore外联网管理员?

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

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

Sitecore的\编辑器(本地外网管理员)

外网\用户

+0

你是什么意思,每个人都有“自己的外联网”?如同一个外联网站点,或只是一组外联网用户? – 2011-03-30 13:35:37

+0

他们有他们自己的外部网站 – 2011-03-31 07:05:04

回答

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 
     } 

    } 
} 

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

+0

我有点希望避免这种情况,也许认为它可以用std来完成。功能,但我会给这个镜头。 – 2011-03-31 07:09:17

+0

我只想让Sitecore用户在管理员或“Sitecore \ Sitecore客户帐户管理”角色中进行检查。 对于外联网用户,我假设您必须制作一些自定义代码,以允许Extranet用户创建其他用户。 或者你可以试着问问Sitecore https://support.sitecore.net/helpdesk/Default.aspx – Holger 2011-03-31 07:17:59

+0

是的,它似乎工作我要去用它。 – 2011-03-31 08:11:22