项目需要控制controller和action的访问权限。

看了下资料,发觉还是很方便的。

首先在mvc项目下创建一个文件夹 Filters,

然后在Filters中创建一个类。代码如下

namespace API.Filters
{
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class APISignAttribute : ActionFilterAttribute
{
public static readonly string APISign = WebConfigurationManager.AppSettings["APISign"]; public override void OnActionExecuting(HttpActionContext actionContext)
{
//string a = "统一处理";
//var q = HttpContext.Current.Session["a"] == null ? "" : HttpContext.Current.Session["a"].ToString();
      //使用filterContext.ActionParameters["sign"]可以修改参数
      //HttpContext.Current.Request.Form["sign"] 不能修改参数
      //filterContext.ActionParameters["sign"] = sign + "123" //Son继承自Father,这里可以直接获取传递过来的model
var q = (Father)actionContext.ActionArguments["model"]; if (IsVaild(actionContext))
{
base.OnActionExecuting(actionContext);
}
else
{
throw new Exception("Invalid sign");
} } public bool IsVaild(HttpActionContext actionContext)
{
if (HttpContext.Current.Request.QueryString["sign"] != null)
return true;
return false;
} public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
// 若发生例外则不在这边处理
if (actionExecutedContext.Exception != null)
return; base.OnActionExecuted(actionExecutedContext);
}
}
}

然后就可以使用了。

namespace API.Controllers
{
//可以在controller下,
//这样代表整个controller中的action都有权限控制
[APISignAttribute]
public class TestController : BaseControllerAPI
{
[HttpGet]
public string Get()
{
return "value";
} //也可以在单个action下
[APISignAttribute]
[HttpGet]
public string haha(Son model)
{
return "value1";
}
}
}

如果你的所有访问都需要权限控制。

那么可以在  RouteConfig  和 WebApiConfig中增加以下代码

public static void Register(HttpConfiguration config)
{ //注册 sign统一验证
config.Filters.Add(new APISignAttribute());
}

PS:如果过滤器不执行,那么命名空间可能有问题 

WebAPI:System.Web.Http.Filters

MVC:System.Web.Http.Mvc

mvc Filters 过滤器的更多相关文章

  1. .net core MVC Filters 过滤器介绍

    一.过滤器的优级依次介绍如下(逐次递减): Authorization Filter ->  Resource Filter -> Acton Filter -> Exception ...

  2. Asp.Net MVC 3【Filters(过滤器)】

    这里分享MVC里的Filters(过滤器),什么是MVC里的过滤器,他的作用是什么? 过滤器的请求处理管道中注入额外的逻辑.他们提供了一个简单而优雅的方式来实现横切关注点.这个术语是指所有对应用程序的 ...

  3. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  4. .net core MVC 通过 Filters 过滤器拦截请求及响应内容

    前提: 需要nuget   Microsoft.Extensions.Logging.Log4Net.AspNetCore   2.2.6: Swashbuckle.AspNetCore 我暂时用的是 ...

  5. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

  6. 使用ASP.NET MVC操作过滤器记录日志(转)

    使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_Filte ...

  7. 爱上MVC系列~过滤器实现对响应流的处理

    回到目录 MVC的过滤器相信大家都用过,一般用来作权限控制,因为它可以监视你的Action从进入到最后View的渲染,整个过程ActionFilter这个过滤器都参与了,而这给我们的开发带来了更多的好 ...

  8. ASP.NET MVC : Action过滤器(Filtering)

    http://www.cnblogs.com/QLeelulu/archive/2008/03/21/1117092.html ASP.NET MVC : Action过滤器(Filtering) 相 ...

  9. [翻译] 使用ASP.NET MVC操作过滤器记录日志

    [翻译] 使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_ ...

随机推荐

  1. Linux下修改/设置环境变量JAVA_HOME

    export设置只对当前的bash登录session有效.这是存在内存里面的.你可以写入文件一般的文件.之后source它.或者放到/etc/profile 等等的位置里,不同的地方效果不同. 1. ...

  2. Luogu P3768 简单的数学题

    非常恶心的一道数学题,推式子推到吐血. 光是\(\gcd\)求和我还是会的,但是多了个\(ij\)是什么鬼东西. \[\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)=\sum_ ...

  3. Luogu P4053 [JSOI2007]建筑抢修

    一道贪心题,看数据范围就知道要套一个数据结构上去. 别走啊不是什么很高级的数据结构 考虑最朴素的想法,按建筑的抢修时间排序并先拿小的 然后随便想想都可以找到一堆反例 所以我们就直接考虑模拟这个过程,按 ...

  4. bitcoin 源码解析 - 交易 Transaction(三) - Script

    bitcoin 源码解析 - 交易 Transaction(三) - Script 之前的章节已经比较粗略的解释了在Transaction体系当中的整体运作原理.接下来的章节会对这个体系进行分解,比较 ...

  5. 【强化学习】python 实现 saras lambda 例一

    本文作者:hhh5460 本文地址:https://www.cnblogs.com/hhh5460/p/10147265.html 将例一用saras lambda算法重新撸了一遍,没有参照任何其他人 ...

  6. Ubuntu16.04程序自启动

    试过修改/etc/rc.local文件,但是启动无效. 目前试过行之有效的方式如下: 参考:https://www.aliyun.com/jiaocheng/186625.html 在终端执行 gno ...

  7. Qt实现软件自动更新的一种简单方法

    前言 最近在学习Qt开发上位机,想实现一个检查更新的功能,网上搜索了一大圈,发现实现过程都很复杂,关键是代码看不懂,所以就自己开发一种简单的方式来实现.实现效果如下: 点击"检查更新&quo ...

  8. Linux下部署Samba服务环境的操作记录

    关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...

  9. linux-流程控制语言

    if: for: 增强for循环 while: 统计这个目录下所有文件的大小 编写脚本 执行 help text:

  10. spring cloud bus原理总结

    1.spring cloud bus spring cloud是按照spring的配置对一系列微服务框架的集成,spring cloud bus是其中一个微服务框架,用于实现微服务之间的通信. spr ...