我查了Sitecore.Resources.Media.MediaRequestHandler
类的代码,它的工作原理如下:
- Sitecore的尝试获取mediaItem,然后检查用户AccessRights
- 如果访问权限都很好,它会处理项目
- 如果用户没有足够的访问权限,Sitecore将重定向到网站的登录页面,该页面在
<site name="yoursite" loginPage="">
部分中设置。如果未设置此登录页面,则Sitecore将重定向到web.config中的<setting name="NoAccessUrl" />
设置。
我假设您已将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
this blogpost