/// <summary> /// 通过当前登录用户的token 获取用户信息,并缓存 /// </summary> /// <param name="token"></param> /// <returns></returns> public Entities.SysUser getLogged(string token) { Entities.SysUserToken userToken = null; Entities.SysUser sysUser = null; // _memoryCache.TryGetValue<Entities.SysUserToken>(token, out userToken); if (userToken != null) { // _memoryCache.TryGetValue(String.Format(MODEL_KEY, userToken.SysUserId), out sysUser); } if (sysUser != null) { return(sysUser); } Guid tokenId = Guid.Empty; if (Guid.TryParse(token, out tokenId)) { var tokenItem = _sysUserTokenRepository.Table.Include(x => x.SysUser) .FirstOrDefault(o => o.Id == tokenId); if (tokenItem != null) { // _memoryCache.Set(token, tokenItem, DateTimeOffset.Now.AddHours(4)); //缓存 // _memoryCache.Set(String.Format(MODEL_KEY, tokenItem.SysUserId), tokenItem.SysUser, DateTimeOffset.Now.AddHours(4)); var model = _sysUserRepository.Table.FirstOrDefault(o => o.Id == tokenItem.SysUserId); return(model); } } return(null); }
public (bool Status, string Message, string Token, Entities.SysUser User) ValidUser(string account, string password, string r) { var user = GetByAccount(account); if (user == null) { return(false, "用户名或密码错误!", null, null); } //被冻结 if (!user.Enabled) { return(false, "用户已被冻结!", null, null); } //被锁住的情况 if (user.LoginLock) { if (user.AllowLoginTime > DateTime.Now) { return(false, "账号已被锁定,剩余" + ((int)(user.AllowLoginTime - DateTime.Now).Value.TotalMinutes + 1) + "分钟", null, null); } } var md5Password = EncryptorHelper.GetMD5(user.Password + r); //登录成功 if (password.Equals(md5Password, StringComparison.InvariantCultureIgnoreCase)) { user.LoginLock = false; user.LoginFailedNum = 0; user.LastLoginTime = DateTime.Now; user.LastIpAddress = ""; //登录日志 user.SysUserLoginLogs.Add(new SysUserLoginLog { Id = Guid.NewGuid(), IpAddress = "", LoginTime = DateTime.Now, Message = "登录:成功", UserId = user.Id }); var userToken = new Entities.SysUserToken { Id = Guid.NewGuid(), SysUserId = user.Id, ExpireTime = DateTime.Now.AddDays(15) }; user.SysUserTokens.Add(userToken); _repository.DbContext.SaveChanges(); return(true, "登录成功", userToken.Id.ToString(), user); } else { //登录日志 user.SysUserLoginLogs.Add(new SysUserLoginLog { Id = Guid.NewGuid(), IpAddress = "", LoginTime = DateTime.Now, Message = "登录:密码错误!", UserId = user.Id }); user.LoginFailedNum++; if (user.LoginFailedNum > 5) { user.LoginLock = true; user.AllowLoginTime = DateTime.Now.AddHours(2); } _repository.DbContext.SaveChanges(); } return(false, "用户名或密码错误!", null, null); }