关于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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。