关于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

 

posted @ 2015-01-27 22:45  西伯利亚寒风  阅读(1717)  评论(1编辑  收藏  举报