首页 > Web开发 > 详细

ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)

时间:2016-01-06 13:48:58      阅读:293      评论:0      收藏:0      [点我收藏+]

原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/13/1310419.html

前一篇中我们已经了解了Action Filter 与 内置的Filter实现。如今我们就来写一个实例。

就写一个防盗链的Filter吧。

首先继承自FilterAttribute类同一时候实现IActionFilter接口,代码例如以下:

技术分享
技术分享/// <summary>
技术分享
/// 防盗链Filter.
技术分享
/// </summary>

技术分享public class AntiOutSiteLinkAttribute : ActionFilterAttribute, IActionFilter
技术分享
{
技术分享    
public AntiOutSiteLinkAttribute(FileType fileType)
技术分享    
{
技术分享        
this.FileType = fileType;
技术分享    }

技术分享
技术分享    
/// <summary>
技术分享    
/// 请求的文件类型.(文件或图片)
技术分享    
/// </summary>

技术分享    public FileType FileType getset; }
技术分享
技术分享    
IActionFilter 成员
技术分享
技术分享    
/// <summary>
技术分享    
/// 获取站点的根域名
技术分享    
/// </summary>
技术分享    
/// <param name="domain">站点的域名,不带"Http://"</param>
技术分享    
/// <returns></returns>

技术分享    private string GetRootDomain(string domain)
技术分享    
{
技术分享        
if (string.IsNullOrEmpty(domain))
技术分享        
{
技术分享            
throw new ArgumentNullException("參数‘domain‘不能为空");
技术分享        }

技术分享        
string[] arr = domain.Split(new[] . }, StringSplitOptions.RemoveEmptyEntries);
技术分享        
if (arr.Length <= 2)
技术分享        
{
技术分享            
return domain;
技术分享        }

技术分享        
else
技术分享        
{
技术分享            
return arr[arr.Length - 2+ "." + arr[arr.Length - 1];
技术分享        }

技术分享    }

技术分享}

技术分享
技术分享
public enum FileType
技术分享
{
技术分享    File 
= 1,
技术分享    Image
技术分享}
技术分享

 

然后我们建立一个用于处理文件请求的Controller,并应用上我们刚才建立的Filter:

技术分享
public class FilesController : BaseController
{
    [AntiOutSiteLink(FileType.Image)]
    
public ActionResult Image(string file)
    {
        
return Content("Image From 4mvc");
    } 

    [AntiOutSiteLink(FileType.File)]
    
public ActionResult File(string file)
    {
        
return Content("File From 4mvc");
    }
技术分享

简单測试一下:

技术分享

技术分享


ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)

原文:http://www.cnblogs.com/lcchuguo/p/5104997.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!