码迷,mamicode.com
首页 > 数据库 > 详细

【从零开始构建一个MVC+Log4net+KnockOut+EasyUI+FluentData+SQLite的框架】X、登录模块的实现

时间:2015-04-07 18:59:23      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:

  一、使用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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!