您好 我正在开发一个具有多个站点的应用程序,每个站点都有自己的外联网,这一切都运行得很好,使用Sitecore 6.4。
现在我需要每个站点的编辑者(而不是管理员)才能创建只能访问连接到站点的外联网的外联网用户,这是否可能?
基本上我正在寻找这样的结构:
Sitecore \ Editor(本地外联网管理员)
外联网\用户
答案 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
}
}
}
这有点简单,基于我试图通过一些工作代码一起破解的一些代码,创建了一个用户并登录并应该调整到你正在做的事情,因为可能存在一些错误。