public IActionResult Login([FromForm] LoginModel model) { AdminUserDTO adminUser = _adminUserService.GetByUserName(model.UserName); //判断数据是否为null if (adminUser == null) { return(ApiResult(message: "用户名或密码错误,请重新登录!", httpStatusCode: (int)HttpStatusCode.Forbidden)); } //判断用户是否为锁定状态 if ((adminUser.LastLoginErrorDateTime - DateTime.Now)?.Minutes < 20 && adminUser.LoginErrorTimes > 5) { return(ApiResult(message: "当前用户为锁定状态,不可登陆!", httpStatusCode: (int)HttpStatusCode.Unauthorized)); } bool result = _adminUserService.CheckLogin(model.UserName, model.Password); if (result) { //重置登陆错误次数 if (adminUser.LoginErrorTimes > 0) { _adminUserService.ResetLoginError(adminUser.Id); adminUser.LoginErrorTimes = 0; adminUser.LastLoginErrorDateTime = null; } //将数据提交至redis //await StringSetAsync(RedisKeyPrefix.AdminUserId + adminUser.Id, JsonConvert.SerializeObject(adminUser)); var data = JWTEnCode(JsonConvert.SerializeObject(adminUser)); return(ApiResult(data, "登陆成功。", (int)HttpStatusCode.OK)); } else { adminUser.LoginErrorTimes += 1; adminUser.LastLoginErrorDateTime = DateTime.Now; //将数据提交至redis //await StringSetAsync(RedisKeyPrefix.AdminUserId + adminUser.Id, JsonConvert.SerializeObject(adminUser)); var checkRes = _adminUserService.RecordLoginError(model.UserName); if (!checkRes) { return(ApiResult(message: "出错!", httpStatusCode: (int)HttpStatusCode.Unauthorized)); } return(ApiResult(message: "用户名或密码错误,请重新登录!", httpStatusCode: (int)HttpStatusCode.Unauthorized)); } }