Sitecore - 根据要求获取有关媒体项目的信息
Sitecore - Get information about media item on request
我们在 Sitecore 解决方案中下载媒体项目时遇到了问题。我们想要验证下载媒体的用户。如果用户无权访问该文件,我们需要重定向 user/cancel 下载。
决定重定向的是该媒体项目的元数据(带有 ID 的字段)。
我们做了一个模块:
<add type="Lib.CustomMediaRequestSessionModule, Lib" name="CustomMediaRequestSessionModule" />
代码:
public class CustomMediaRequestSessionModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.BeginRequest += Application_BeginRequest;
}
private void Application_BeginRequest(object source, EventArgs e)
{
var application = (HttpApplication)source;
var currentContext = HttpContext.Current;
if (currentContext.Request.Url.ToString().ToLower().Contains("/~/media/"))
{
//Here we want to authenticate the user
}
}
public void Dispose()
{
}
}
我们从请求中获得的唯一信息是文件的路径。 "/~/media/path/to/file.doc".
是否有其他方法可以从媒体项中获取更多信息?在 Sitecore 中执行相同操作是否有更好的方法?
您可以使用MediaManager.ParseMediaRequest
方法获取媒体项:
MediaRequest request = MediaManager.ParseMediaRequest(HttpContext.Current.Request);
if (request == null)
{
return false;
}
Media media = MediaManager.GetMedia(request.MediaUri);
这里有一篇不错的博客 post 解释了如何限制 Sitecore 中的媒体项目 Restricting access to Sitecore Media Items
我们在 Sitecore 解决方案中下载媒体项目时遇到了问题。我们想要验证下载媒体的用户。如果用户无权访问该文件,我们需要重定向 user/cancel 下载。
决定重定向的是该媒体项目的元数据(带有 ID 的字段)。
我们做了一个模块:
<add type="Lib.CustomMediaRequestSessionModule, Lib" name="CustomMediaRequestSessionModule" />
代码:
public class CustomMediaRequestSessionModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.BeginRequest += Application_BeginRequest;
}
private void Application_BeginRequest(object source, EventArgs e)
{
var application = (HttpApplication)source;
var currentContext = HttpContext.Current;
if (currentContext.Request.Url.ToString().ToLower().Contains("/~/media/"))
{
//Here we want to authenticate the user
}
}
public void Dispose()
{
}
}
我们从请求中获得的唯一信息是文件的路径。 "/~/media/path/to/file.doc".
是否有其他方法可以从媒体项中获取更多信息?在 Sitecore 中执行相同操作是否有更好的方法?
您可以使用MediaManager.ParseMediaRequest
方法获取媒体项:
MediaRequest request = MediaManager.ParseMediaRequest(HttpContext.Current.Request);
if (request == null)
{
return false;
}
Media media = MediaManager.GetMedia(request.MediaUri);
这里有一篇不错的博客 post 解释了如何限制 Sitecore 中的媒体项目 Restricting access to Sitecore Media Items