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); } }
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); } }