public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);
            //EventLog.WriteLog("start3" + IsCheck);
            if (IsCheck)
            {
                if (filterContext.HttpContext.User == null)
                {
                    return;
                }
                if (filterContext.HttpContext.User.Identity == null)
                {
                    return;
                }

                //校验用户是否已经登录
                if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
                {
                    //跳转到登陆页
                    filterContext.Result = new RedirectResult("~/account/login?error=4", true);
                    return;
                }
                var user = new LMIdentityDbContext().Users.Find(filterContext.HttpContext.User.Identity.GetUserId());
                if (user == null || (user.Role != "科目一" && user.Role != "科目四"))
                {
                    //跳转到登陆页
                    filterContext.Result = new RedirectResult("~/account/login?error=1", true);
                    return;
                }
                if (user.Role == "科目一" || user.Role == "科目四")
                {
                    if (Cookie.GetCookie("guid") != filterContext.HttpContext.User.Identity.GetUserId())
                    {
                        //跳转到登陆页  超时过期
                        filterContext.Result = new RedirectResult("~/account/login?error=5", true);
                        return;
                    }
                }


                if (user.LastLoginTime != null)
                {
                    //每5分钟,如果会员有操作,更新上次登录时间为现在
                    if (DateHelper.DateDiff(DateInterval.Minute, user.LastLoginTime.Value, DateTime.Now) > 5)
                    {
                        user.LastLoginTime = DateTime.Now;
                        using (var db = new LMIdentityDbContext())
                        {
                            string sql = string.Format("update aspnetusers set LastLoginTime='{0}' where id='{1}'", user.LastLoginTime, filterContext.HttpContext.User.Identity.GetUserId());
                            db.Database.ExecuteSqlCommand(sql);
                        }
                    }
                }
            }
        }
Пример #2
0
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);
            //EventLog.WriteLog("start3" + IsCheck);
            if (IsCheck)
            {
                if (filterContext.HttpContext.User == null)
                {
                    return;
                }
                if (filterContext.HttpContext.User.Identity == null)
                {
                    return;
                }

                //校验用户是否已经登录
                if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
                {
                    //跳转到登陆页
                    filterContext.Result = new RedirectResult("~/m/home/index?error=4", true);
                    return;
                }
                var user = new LMIdentityDbContext().Users.Find(filterContext.HttpContext.User.Identity.GetUserId());
                if (user == null || (user.Role != "admin" || user.RoleLevel != 0))
                {
                    //跳转到登陆页
                    filterContext.Result = new RedirectResult("~/m/home/index?error=1", true);
                    return;
                }


                if (Cookie.GetCookie("guid") != filterContext.HttpContext.User.Identity.GetUserId())
                {
                    //跳转到登陆页  超时过期
                    filterContext.Result = new RedirectResult("~/m/home/index?error=5", true);
                    return;
                }
            }
        }