예제 #1
0
 private UserInfo GetUser()
 {
     try
     {
         string        token         = ControllerContext.HttpContext.Request.Cookies[SecurityManager._securityToken].ToString();
         ICacheBase    cacheBase     = (ICacheBase)HttpContext.RequestServices.GetService(typeof(ICacheBase));
         UserInfoCache userInfoCache = new UserInfoCache(cacheBase);
         //Kiểm tra thông tin user trong cache, Nếu không tồn tại thì return false
         _user = userInfoCache.GetUser(SecurityManager.getUserId(token));
         return(_user);
     }
     catch (Exception)
     {
         return(null);
     }
 }
예제 #2
0
        private bool Authorize(AuthorizationFilterContext actionContext)
        {
            try
            {
                var    request = actionContext.HttpContext.Request;
                string token   = request.Cookies[SecurityManager._securityToken];
                //Kiểm tra token có hợp lệ hay không
                bool tokenValid = SecurityManager.IsTokenValid(token, request.Headers["User-Agent"]);
                if (!tokenValid)
                {
                    return(tokenValid);
                }
                UserInfoCache userInfoCache = (UserInfoCache)actionContext.HttpContext.RequestServices.GetService(typeof(UserInfoCache));
                string        UserId        = SecurityManager.getUserId(token);
                userInfo = userInfoCache.GetUser(UserId);
                if (userInfo == null)
                {
                    IUserRepository userRepository = (IUserRepository)actionContext.HttpContext.RequestServices.GetService(typeof(IUserRepository));
                    userInfo = (from obj in userRepository.All
                                where obj.Id == UserId
                                select new UserInfo()
                    {
                        Id = obj.Id,
                        DayOfBirth = obj.DayOfBirth,
                        Email = obj.Email,
                        FullName = obj.FullName,
                        Gender = obj.Gender,
                        PhoneNo = obj.PhoneNo,
                        UserName = obj.UserName,
                        RoleInfo = obj.UserRole.Select(p => new RoleInfo()
                        {
                            Id = p.RoleId,
                            RoleCode = p.Role.RoleCode,
                            RoleName = p.Role.RoleName
                        })
                    }).FirstOrDefault();
                    if (userInfo != null)
                    {
                        userInfoCache.SetUser(userInfo);
                    }
                }

                cacheMenu = userInfoCache.GetMenuCaches();
                if (cacheMenu == null)
                {
                    IMenuRepository menuRepository = (IMenuRepository)actionContext.HttpContext.RequestServices.GetService(typeof(IMenuRepository));
                    cacheMenu = menuRepository.All.Select(p => new CacheMenu
                    {
                        Order         = p.Order,
                        Name          = p.Name,
                        DisplayName   = p.DisplayName,
                        HierarchyCode = p.HierarchyCode,
                        Icon          = p.Icon,
                        Controller    = p.Controller,
                        Roles         = p.MenuRoles.Select(r => r.RoleId).ToList(),
                    }).OrderBy(p => p.HierarchyCode).ToList();
                    userInfoCache.UpdateMenuCaches(cacheMenu);
                }

                ////Kiểm tra thông tin user trong cache, Nếu không tồn tại thì return false
                return(userInfo != null);
            }
            catch (Exception)
            {
                return(false);
            }
        }