こんにちは私は複数のサイトでアプリケーションを開発しています。各サイトには独自のエクストラネットがあり、Sitecore6.4を使用してすべてがうまく機能しています。
サイトに接続されているエクストラネットにのみアクセスできるエクストラネットユーザーを作成できるようにするには、各サイトの編集者(管理者ではない)が必要ですが、これも可能ですか?
基本的に私はこのような構造を探しています:
Sitecore \ Editor(ローカルエクストラネット管理者)
エクストラネット\ユーザー
たとえば、「エクストラネット」ごとにエクストラネットの役割を作成できると思います。Site1Admin。
次に、ユーザーを作成できるページを作成し、そのユーザーに必要な基本的な役割を与えます。
これはSitecore6.0のコードですが、6.4afaikでも同じである必要があります。
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
}
}
}
これはちょっと単純で、作業中のコードから一緒にハッキングしようとしたコードに基づいています。ユーザーを作成してログインしました。おそらくエラーが発生する可能性があるため、ユーザーの操作に合わせて調整する必要があります。