クラスのコードを確認したSitecore.Resources.Media.MediaRequestHandler
ところ、次のように機能します。
- Sitecore は mediaItem の取得を試み、ユーザーの AccessRights をチェックします。
- アクセス権に問題がなければ、アイテムを処理します
- ユーザーが十分なアクセス権を持っていない場合、Sitecore は
<site name="yoursite" loginPage="">
セクションで設定されたサイトのログイン ページにリダイレクトします。この loginPage が設定されていない場合、Sitecore<setting name="NoAccessUrl" />
は web.config の設定にリダイレクトします。
loginPage 設定がログインページに設定されていると仮定します。これが望ましい動作でない場合は、MediaRequestHandler のカスタム ハンドラーを作成できます。
不十分なアクセス権を処理する MediaRequestHandler のコードの一部を参照してください。
using (SecurityDisabler securityDisabler = new SecurityDisabler())
{
media = MediaManager.GetMedia(mediaRequest.MediaUri);
}
if (media != null)
{
Assert.IsNotNull(Context.Site, "site");
if (Context.Site.LoginPage != string.Empty)
{
loginPage = Context.Site.LoginPage;
}
else
{
loginPage = Settings.NoAccessUrl;
}
itemNotFoundUrl = loginPage;
}
else
{
itemNotFoundUrl = Settings.ItemNotFoundUrl;
}
if (!Settings.RequestErrors.UseServerSideRedirect)
{
HttpContext.Current.Response.Redirect(itemNotFoundUrl);
}
else
{
HttpContext.Current.Server.Transfer(itemNotFoundUrl);
}
カスタム MediaHandler を作成する方法については、このブログ投稿を参照してください。