zoukankan      html  css  js  c++  java
  • ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例防盗链) 【转】

    本系列文章基于ASP.NET MVC Preview5.

    前一篇中我们已经了解了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");
        }

    简单测试一下:

    image

    image

    对于ActionFilter的应用是很广泛的,这需要你的灵活运用。对于其他应用,你可以参考我之前翻译的ASP.NET MVC Action Filter - 缓存与压缩 这一篇文章。

    Enjoy!这个没有什么代码,就暂不传代码了。

  • 相关阅读:
    day 66 ORM django 简介
    day 65 HTTP协议 Web框架的原理 服务器程序和应用程序
    jQuery的事件绑定和解绑 事件委托 轮播实现 jQuery的ajax jQuery补充
    background 超链接导航栏案例 定位
    继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素
    属性选择器 伪类选择器 伪元素选择器 浮动
    css的导入方式 基础选择器 高级选择器
    03-body标签中相关标签
    Java使用内存映射实现大文件的上传
    正则表达式
  • 原文地址:https://www.cnblogs.com/cxd4321/p/1565372.html
Copyright © 2011-2022 走看看