C# Sitecore-根据请求获取有关媒体项的信息

C# Sitecore-根据请求获取有关媒体项的信息,c#,sitecore,httprequest,sitecore7,C#,Sitecore,Httprequest,Sitecore7,我们在Sitecore解决方案中下载媒体项目时遇到了一个问题。我们要对下载媒体的用户进行身份验证。如果用户无权访问该文件,我们需要重定向该用户/取消下载 决定重定向的是媒体项上的元数据,即ID为的字段 我们制作了一个模块: <add type="Lib.CustomMediaRequestSessionModule, Lib" name="CustomMediaRequestSessionModule" /> 我们从请求中获得的唯一信息是文件的路径/~/介质/path/to/fil

我们在Sitecore解决方案中下载媒体项目时遇到了一个问题。我们要对下载媒体的用户进行身份验证。如果用户无权访问该文件,我们需要重定向该用户/取消下载

决定重定向的是媒体项上的元数据,即ID为的字段

我们制作了一个模块:

<add type="Lib.CustomMediaRequestSessionModule, Lib" name="CustomMediaRequestSessionModule" />
我们从请求中获得的唯一信息是文件的路径/~/介质/path/to/file.doc

是否有其他方法可以从媒体项目获取更多信息?是否有更好的方法在Sitecore中执行相同的操作?

您可以使用MediaManager.ParseMediaRequest方法获取媒体项:

MediaRequest=MediaManager.ParseMediaRequestHttpContext.Current.request; 如果请求==null { 返回false; } Media Media=MediaManager.GetMediarequest.MediaUri; 这里有一篇很好的博文,解释了如何在Sitecore中限制媒体项

您可以使用MediaManager.ParseMediaRequest方法获取媒体项:

MediaRequest=MediaManager.ParseMediaRequestHttpContext.Current.request; 如果请求==null { 返回false; } Media Media=MediaManager.GetMediarequest.MediaUri; 这里有一篇很好的博客文章,解释了如何在Sitecore中限制媒体项目

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()
    {
    }
}