MVC权限验证过滤器

Action属性,权限设定属性

  [AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
    public class PurviewEnumAttribute : Attribute
    {
        public string PurviewString { get; set; }

        public PurviewEnumAttribute(string purview)
        {
            this.PurviewString = purview;
        }
    }

Action属性,权限验证属性

  [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public class SuperICAuthorizeAttribute : AuthorizeAttribute
    {
        public string[] ActionPowers { get; set; }

        public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
        {
            string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            string actionName = filterContext.ActionDescriptor.ActionName;
            object[] attributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(PurviewEnumAttribute), true);
            if (attributes != null && attributes.Count() > 0)
            {
                string power = (attributes[0] as PurviewEnumAttribute).PurviewString;
                this.ActionPowers = power.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
            }
            base.OnAuthorization(filterContext);
        }

        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (httpContext == null)
            {
                return false;
            }
            if (ActionPowers == null)
            {
                return true;
            }
            if (ActionPowers.Length == 0)
            {
                return true;
            }
            // if (ActionPowers.Any(httpContext.User.IsInRole))
            if (ActionPowers.Any((new string[]{"1","2","3","4"}).Contains))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    } 

使用:Index需要权限为2的才能够进入,SuperICAuthorize过滤器中验证是否具有2的权限

[PurviewEnum("2")]
[SuperICAuthorize]
public ActionResult Index() 
时间: 2024-12-07 20:46:51

MVC权限验证过滤器的相关文章

在.Net MVC结构API接口中判断http头信息实现公共的权限验证过滤器示例

//control   action public class TestController : ApiController { [MyAuthFilter] public string test(string str) { return str.Trim(); } } //过虑器类 public class MyAuthFilter : ActionFilterAttribute { const string SecurityKeyName = "MySecurityKey";//h

C# MVC权限验证

前言 之前一直没怎么接触过权限验证这块,刚好公司老平台改版,就有了这篇权限验证.此篇文章大致讲解下 精确到按钮级别的验证如何实现.以及权限验证设计的参考思路(菜鸟一枚,大神勿喷). 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码,那我们可以通过AOP截取实现,而在MVC项目中我们就可以直接使用它提供的Filter的特性帮我们解决,不用自己实现复杂的A

mvc权限验证--AuthorizeAttribute

在做后台管理时用户登录后就需要验证哪些权限了,没有登录的就直接退出到登录页面. 系统有自带的权限[Authorize],可用于几个地方: 1.将属性[Authorize]置于相关的action上方,验证当前 [Authorize] public ActionResult Index() { return View(); } 2.将属性[Authorize]置于控制器上方 [Authorize] public class MainController : Controller { // } 3.将

MVC权限验证之ActionFilterAttribute

参考:http://www.cnblogs.com/waitingfor/archive/2011/12/27/2303784.html ActionFilterAttribute是Action过滤类,该属于会在执行一个action之前先执行. 而ActionFilterAttribute是 MVC的一个专门处理action过滤的类.基于这个原理 我们做一个权限限制 例如:如何访问 HomeController  里的test  action using System;using System.

Spring MVC + Shiro 实现权限验证

MAVEN的pom.xml 引入shiro(Spring MVC+mybatis 请参见上一章). <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.2.5</version> </dependency> <!-- http://mvnrepository.co

【3】.net MVC 使用IPrincipal进行Form登录即权限验证

1.在MVC项目中添加用户类,可以根据实际项目需求添加必要属性 public class UserData { /// <summary> /// ID /// </summary> public int UserId { get; set; } /// <summary> /// 用户名 /// </summary> public string UserName { get; set; } /// <summary> /// 角色ID列表 //

MVC身份验证及权限管理

MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式,其中最常用的就是我们的Form认证,需要配置相应的信息.例如下面的配置信息: <authentication mode="Forms"> <forms loginUrl="Login.aspx" defaultUrl="Default.aspx" protection="All" /> &l

MVC过滤器---身份验证过滤器

身份验证过滤器的用法(一) 1.首先创建一个自己定义的过滤类继承MVC身份验证过滤类,重写OnAuthorization方法 public class MyAuthorization:AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { //如果保留如下代码,则会运行.net framework定义好的身份验证,如果希望自定义身份验证,则删除如下代码 //ba

Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码

本问主要介绍asp.net的身份验证机制及asp.net MVC拦截器在项目中的运用.现在让我们来模拟一个简单的流程:用户登录>权限验证>异常处理 1.用户登录 验证用户是否登录成功步骤直接忽略,用户登录成功后怎么保存当前用户登录信息(session,cookie),本文介绍的是身份验证(其实就是基于cookie)的,下面看看代码. 引入命名空间 using System.Web.Security; Users ModelUser = new Users() { ID = 10000, Nam