public async Task <ApiResult <string> > LoginWithUserNamePasswordAsync([FromBody] UserNamePasswordLoginRequest request) { if (!ModelState.IsValid) { return(Error <string>()); } return(await _userService.LoginWithUserNamePasswordAsync(request)); }
/// <summary> /// 用户名密码登陆 (jwt) /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <ApiResult <string> > LoginWithUserNamePasswordAsync(UserNamePasswordLoginRequest request) { var response = new ApiResult <string>(); try { var user = await _userRepository.Table .FirstOrDefaultAsync(item => item.UserName == request.UserName && item.Status == 1); if (user == null) { response.Code = Code.Error; response.Message = "该用户名不存在"; return(response); } if (!await _userPasswordService.VerifyPasswordAsync(user.Id, request.Password)) { response.Code = Code.Error; response.Message = "密码错误"; return(response); } //获取令牌 var token = _mangoJwtTokenHandler.IssuedToken <User, long>(user, new Claim("aud", request.Audience)); user.LastLoginTime = DateTime.Now; user.LastloginIP = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString(); await _work.SaveChangesAsync(); response.Code = Code.Ok; response.Message = "登陆成功"; response.Data = token; return(response); } catch (Exception ex) { _logger.LogError($"更改密码异常;method={nameof(LoginWithUserNamePasswordAsync)};param={request.ToJson()};exception messges={ex.Message}"); response.Code = Code.Error; response.Message = $"更改密码异常:{ex.Message}"; return(response); } }