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); }
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 { } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <summary> /// 清除用户缓存(Redis) /// </summary> /// <param name="userId"></param> protected void RemoveCache(int userId) { UserCaching.Instance().RemoveCache(userId); }