首页 > 代码库 > 关于ASP.NET MVC权限控制,通过自定义属性Attribute实现

关于ASP.NET MVC权限控制,通过自定义属性Attribute实现

公司打算从webform转到MVC架构,一直困扰我的就是权限控制问题。对于每一个模块,都需要判断该用户是否有访问的权限,每个用户的权限都不同,没有办法用角色权限来控制。在借鉴之前webform的实现方式和MVC的实例应用程序后,想到通过自定义Attribute来实现,实现代码如下:
 

 1     public sealed class FunctionFilterAttribute : ActionFilterAttribute 2     { 3         private string _functionID; 4         public FunctionFilterAttribute(string funcID) 5         { 6             this._functionID = funcID; 7         } 9         public override void OnActionExecuting(ActionExecutingContext filterContext)10         {11             HttpContextBase context = filterContext.HttpContext;12             IList<string> ids = (IList<string>)context.Session["ID"];13             if (ids == null || !ids.Contains(_functionID))14             {15                 context.Response.Write("<script>alert(‘no‘)</script>");16             }17             base.OnActionExecuting(filterContext);18         }19     }

 

调用方法是标记在所需权限的Action前面或者Controller前面,如下:

1 [FunctionFilter("001")]2 public ActionResult Index()

或者:

1 [FunctionFilter("002")]2 public class AccountController : Controller

传入的值就是需要判断的权限ID

 

关于ASP.NET MVC权限控制,通过自定义属性Attribute实现