标签:
一、使用ActionFilterAttribute实现权限管理
1、创建一个菜单过滤器类
//构建一个权限菜单过滤器 public class MvcMenuFilter : ActionFilterAttribute { private bool _isEnable = true;//是否开启过滤 public MvcMenuFilter() { _isEnable = true; }//构造函数1,默认开启 public MvcMenuFilter(bool IsEnable) { _isEnable = IsEnable; }//构造函数2,指定是否开启 //重写OnActionExecuting public override void OnActionExecuting(ActionExecutingContext filterContext) { if (_isEnable)//如果开启过滤 { //获取当前执行的地址 var route = filterContext.RouteData.Values; var url = string.Format("/{0}/{1}/{2}", route["area"], route["controller"], route["action"]); //访问数据库,检查当前用户是否有此权限 if (!new sys_userService().AuthorizeUserMenu(url)) filterContext.Result = new ContentResult() { Content = "你没有访问此功能的权限,请联系管理员!" }; } //执行访问 base.OnActionExecuting(filterContext); } }
2、在过滤器配置文件中加入这个过滤器,那么所有Action都会经过这个过滤器
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new MvcHandleErrorAttribute()); //filters.Add(new System.Web.Mvc.AuthorizeAttribute()); //filters.Add(new MvcDisposeFilter()); filters.Add(new MvcMenuFilter());//加入权限菜单过滤器 } }
3、配置文件web.config中在<system.web>中加入以下节点,验证失败跳到该地址去
参考内容:https://msdn.microsoft.com/zh-cn/library/532aee0e.aspx
问题:这个和上面的提示是否冲突
<authentication mode="Forms"> <forms loginUrl="~/Login" timeout="2880" /> </authentication>
【从零开始构建一个MVC+Log4net+KnockOut+EasyUI+FluentData+SQLite的框架】X、登录模块的实现
标签:
原文地址:http://www.cnblogs.com/LiveYourLife/p/4398847.html