嗨,我正在开发具有多个站点的应用程序,每个站点都有自己的外联网,这一切都使用 Sitecore 6.4 运行良好。
现在我需要每个站点的编辑(而不是管理员)能够创建只能访问连接到站点的外联网的外联网用户,这甚至可能吗?
基本上我正在寻找这样的结构:
Sitecore\Editor(本地外联网管理员)
外网\用户
我认为您可以为每个“外联网”创建一个外联网角色,例如。站点 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
}
}
}
这有点简单,基于我尝试从一些工作代码中破解的一些代码,这些代码创建了一个用户并让他登录,并且应该根据你正在做的事情进行调整,因为可能存在一些错误。