public void User_Cache_Should_Return_Data_If_User_In_Storage_And_Logged_In()
        {
            var Logger       = serviceProvider.GetService <ILoggerFactory>().CreateLogger <UserCaching>();
            var loggeUserId  = Guid.NewGuid().ToString();
            var UsrMgr       = BuildUserManager <AspNetUser>();
            var cache        = serviceProvider.GetService <IMemoryCache>();
            var httpAccessor = serviceProvider.GetService <IHttpContextAccessor>();

            var user = new AspNetUser()
            {
                UserName = "******",
                Email    = "*****@*****.**",
                Id       = loggeUserId
            };

            UsrMgr.CreateAsync(user);//saving in db

            httpAccessor.HttpContext.User = new ClaimsPrincipal(new
                                                                ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, user.UserName),
                new Claim(ClaimTypes.NameIdentifier, user.Id)
            }, "SomeAuthTYpe"));

            var         signInManager = new FakeSignInManager(httpAccessor);
            UserCaching r             = new UserCaching(signInManager, httpAccessor, cache, UsrMgr, Logger);

            var cachedUsr = r.SetLoggedOnUserInCache().Result;

            Assert.NotNull(cachedUsr);
            Assert.Equal(user.Id, cachedUsr.Id);
        }
Пример #2
0
 public void SetUser(UserCaching user, IEasyCachingProvider _easyCaching)
 {
     try
     {
         var isExist = _easyCaching.Get <string>(user.Id.ToString()).HasValue;
         if (!isExist)
         {
             var userJson = JsonConvert.SerializeObject(user);
             _easyCaching.Set(user.Id.ToString(), userJson, TimeSpan.FromDays(100));
         }
     }
     catch
     { }
 }
Пример #3
0
        /// <summary>
        /// 获取用户资料(Redis内读取,不存在则读取数据库)
        /// </summary>
        /// <param name="siteId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        protected User GetUserInfo(int siteId, int userId)
        {
            User user = UserCaching.Instance().GetUserInfo(userId);

            if (user == null)
            {
                user = this.ReadDB.ReadInfo <User>(t => t.SiteID == siteId && t.ID == userId);
                if (user != null)
                {
                    UserCaching.Instance().SaveUserInfo(user);
                }
            }
            return(user);
        }
Пример #4
0
        /// <summary>
        /// 获取会员在游戏中的信息(缓存中读取)
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="gameId"></param>
        /// <returns></returns>
        public UserGame GetUserGameInfo(int userId, int gameId)
        {
            UserGame userGame = UserCaching.Instance().GetUserGameInfo(userId, gameId);

            if (userGame == null)
            {
                userGame = this.ReadDB.ReadInfo <UserGame>(t => t.GameID == gameId && t.UserID == userId);
                if (userGame != null)
                {
                    UserCaching.Instance().SaveUserGameInfo(userGame);
                }
            }
            return(userGame);
        }
Пример #5
0
        /// <summary>
        /// 根据用户名获取用户ID(缓存中读取)
        /// </summary>
        /// <param name="siteId"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public int GetUserID(int siteId, string userName)
        {
            int userId = UserCaching.Instance().GetUserID(siteId, userName);

            if (userId == 0)
            {
                userId = this.ReadDB.ReadInfo <User, int>(t => t.ID, t => t.SiteID == siteId && t.UserName == userName);
                if (userId != 0)
                {
                    UserCaching.Instance().SaveUserID(siteId, userId, userName);
                }
            }
            return(userId);
        }
Пример #6
0
        /// <summary>
        /// 获取用户名 (缓存中读取)
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public string GetUserName(int userId)
        {
            string userName = UserCaching.Instance().GetUserName(userId);

            if (string.IsNullOrEmpty(userName))
            {
                User user = this.ReadDB.ReadInfo <User>(t => t.ID == userId);
                if (user != null)
                {
                    userName = user.UserName;
                    UserCaching.Instance().SaveUserID(user.SiteID, user.ID, user.UserName);
                }
            }
            return(userName);
        }
Пример #7
0
        /// <summary>
        /// 根据用户名获取用户的ID
        /// </summary>
        /// <param name="siteId"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public int GetUserID(int siteId, string userName)
        {
            if (siteId == 0 || string.IsNullOrEmpty(userName))
            {
                return(0);
            }
            int userId = UserCaching.Instance().GetUserID(siteId, userName);

            if (userId == 0)
            {
                userId = this.ReadDB.ExecuteScalar <User, int>(t => t.ID, t => t.SiteID == siteId && t.UserName == userName);
                if (userId != 0)
                {
                    UserCaching.Instance().SaveUserID(siteId, userId, userName);
                }
            }
            return(userId);
        }
Пример #8
0
        /// <summary>
        /// 根据用户ID得到所在的商户ID(缓存读取)
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public int GetSiteID(int userId)
        {
            if (userId == 0)
            {
                return(0);
            }
            int siteId = UserCaching.Instance().GetSiteID(userId);

            if (siteId != 0)
            {
                siteId = this.ReadDB.ReadInfo <User, int>(t => t.SiteID, t => t.ID == userId);
                if (siteId != 0)
                {
                    UserCaching.Instance().SaveSiteID(userId, siteId);
                }
            }
            return(siteId);
        }
        public async Task User_Cache_Should_Return_Null_If_User_Not_Found_In_Storage()
        {
            var loggedUserId = Guid.NewGuid().ToString();
            var Logger       = serviceProvider.GetService <ILoggerFactory>().CreateLogger <UserCaching>();
            var UsrMgr       = BuildUserManager <AspNetUser>();
            var cache        = serviceProvider.GetService <IMemoryCache>();
            var httpAccessor = serviceProvider.GetService <IHttpContextAccessor>();

            //that use was once logged in but then got deleted somehow
            httpAccessor.HttpContext.User = new ClaimsPrincipal(new
                                                                ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "a-deleted-user"),
                new Claim(ClaimTypes.NameIdentifier, "not-t-be-found")
            }, "SomeAuthTYpe"));

            var         signInManager = new FakeSignInManager(httpAccessor);
            UserCaching r             = new UserCaching(signInManager, httpAccessor, cache, UsrMgr, Logger);

            Assert.Null(await r.SetLoggedOnUserInCache());
        }
        public async Task Should_remove_key_and_data_on_clear_logged_on_user()
        {
            var Logger       = serviceProvider.GetService <ILoggerFactory>().CreateLogger <UserCaching>();
            var loggeUserId  = Guid.NewGuid().ToString();
            var UsrMgr       = BuildUserManager <AspNetUser>();
            var cache        = serviceProvider.GetService <IMemoryCache>();
            var httpAccessor = serviceProvider.GetService <IHttpContextAccessor>();

            var user = new AspNetUser()
            {
                UserName = "******",
                Email    = "*****@*****.**",
                Id       = loggeUserId
            };
            await UsrMgr.CreateAsync(user);//saving in db

            httpAccessor.HttpContext.User = new ClaimsPrincipal(new
                                                                ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, user.UserName),
                new Claim(ClaimTypes.NameIdentifier, user.Id)
            }, "SomeAuthTYpe"));

            var         signInManager = new FakeSignInManager(httpAccessor);
            UserCaching r             = new UserCaching(signInManager, httpAccessor, cache, UsrMgr, Logger);
            await r.SetLoggedOnUserInCache();

            var cachedUsr = await r.GetLoggedOnUser();

            Assert.NotNull(cachedUsr);
            Assert.Equal(user.Id, cachedUsr.Id);
            r.ClearLoggedOnUser();
            //cachedUsr = await r.GetLoggedOnUser();
            //Assert.Null(cachedUsr);
            var keyIsNUll = cache.Get(r.GetUserCacheKey(cachedUsr.Id));

            Assert.Null(keyIsNUll);
        }
Пример #11
0
        /// <summary>
        /// 通过游戏账户名获取用户ID(同步返回商户ID)
        /// </summary>
        /// <param name="gameId"></param>
        /// <param name="playerName"></param>
        /// <param name="siteId"></param>
        /// <returns></returns>
        public int GetGameUserID(int gameId, string playerName, out int siteId)
        {
            int userId = UserCaching.Instance().GetUserID(gameId, playerName);

            if (userId == 0)
            {
                userId = this.ReadDB.ReadInfo <UserGame, int>(t => t.UserID, t => t.GameID == gameId && t.Account == playerName);
                if (userId != 0)
                {
                    UserCaching.Instance().SaveGameUserID(gameId, playerName, userId);
                }
            }
            if (userId == 0)
            {
                siteId = 0;
            }
            else
            {
                siteId = this.GetSiteID(userId);
            }

            return(userId);
        }
        public void User_Cache_Should_Return_Null_If_User_NOT_Logged_In()
        {
            var Logger       = serviceProvider.GetService <ILoggerFactory>().CreateLogger <UserCaching>();
            var loggeUserId  = Guid.NewGuid().ToString();
            var UsrMgr       = BuildUserManager <AspNetUser>();
            var cache        = serviceProvider.GetService <IMemoryCache>();
            var httpAccessor = serviceProvider.GetService <IHttpContextAccessor>();

            var user = new AspNetUser()
            {
                UserName = "******",
                Email    = "*****@*****.**",
                Id       = loggeUserId
            };

            UsrMgr.CreateAsync(user);//saving in db
            httpAccessor.HttpContext.User = null;
            var         signInManager = new FakeSignInManager(httpAccessor);
            UserCaching r             = new UserCaching(signInManager, httpAccessor, cache, UsrMgr, Logger);

            var cachedUsr = r.SetLoggedOnUserInCache().Result;

            Assert.Null(cachedUsr);
        }
Пример #13
0
 /// <summary>
 /// 清除用户缓存(Redis)
 /// </summary>
 /// <param name="userId"></param>
 protected void RemoveCache(int userId)
 {
     UserCaching.Instance().RemoveCache(userId);
 }