首先继承自FilterAttribute类同时实现IActionFilter接口,代码如下:
///<summary>
///防盗链Filter.
///</summary>
public class AntiOutSiteLinkAttribute:ActionFilterAttribute,IActionFilter
{
publicAntiOutSiteLinkAttribute(FileTypefileType)
{
this.FileType=fileType;
}
///<summary>
///请求的文件类型.(文件或图片)
///</summary>
publicFileTypeFileType{get;set;}
IActionFilter成员
///<summary>
///获取网站的根域名
///</summary>
///<paramname="domain">网站的域名,不带"Http://"</param>
///<returns></returns>
privatestringGetRootDomain(stringdomain)
{
if(string.IsNullOrEmpty(domain))
{
thrownewArgumentNullException("参数'domain'不能为空");
}
string[]arr=domain.Split(new[]{'.'},StringSplitOptions.RemoveEmptyEntries);
if(arr.Length<=2)
{
returndomain;
}
else
{
returnarr[arr.Length-2]+"."+arr[arr.Length-1];
}
}
}
public enum FileType
{
File=1,
Image
}
///防盗链Filter.
///</summary>
public class AntiOutSiteLinkAttribute:ActionFilterAttribute,IActionFilter
{
publicAntiOutSiteLinkAttribute(FileTypefileType)
{
this.FileType=fileType;
}
///<summary>
///请求的文件类型.(文件或图片)
///</summary>
publicFileTypeFileType{get;set;}
IActionFilter成员
///<summary>
///获取网站的根域名
///</summary>
///<paramname="domain">网站的域名,不带"Http://"</param>
///<returns></returns>
privatestringGetRootDomain(stringdomain)
{
if(string.IsNullOrEmpty(domain))
{
thrownewArgumentNullException("参数'domain'不能为空");
}
string[]arr=domain.Split(new[]{'.'},StringSplitOptions.RemoveEmptyEntries);
if(arr.Length<=2)
{
returndomain;
}
else
{
returnarr[arr.Length-2]+"."+arr[arr.Length-1];
}
}
}
public enum FileType
{
File=1,
Image
}
然后我们建立一个用于处理文件请求的Controller,并应用上我们刚才建立的Filter:
public
class
FilesController:BaseController
{
[AntiOutSiteLink(FileType.Image)]
public ActionResultImage( string file)
{
return Content( " ImageFrom4mvc " );
}
[AntiOutSiteLink(FileType.File)]
public ActionResultFile( string file)
{
return Content( " FileFrom4mvc " );
}
}
{
[AntiOutSiteLink(FileType.Image)]
public ActionResultImage( string file)
{
return Content( " ImageFrom4mvc " );
}
[AntiOutSiteLink(FileType.File)]
public ActionResultFile( string file)
{
return Content( " FileFrom4mvc " );
}
}
简单测试一下: