public async Task <(OperationResponse item, Claim[] cliams)> Login(LoginDto loginDto) { loginDto.NotNull(nameof(loginDto)); var user = await _userManager.FindByNameAsync(loginDto.UserName); if (user == null) { return(new OperationResponse("此用户不存在!!", OperationResponseType.Error), new Claim[] { }); } var signInResult = await _signInManager.CheckPasswordSignInAsync(user, loginDto.Password, true); if (!signInResult.Succeeded) { if (signInResult.IsLockedOut) { return(new OperationResponse($"用户因密码错误次数过多而被锁定 {_userManager.Options.Lockout.DefaultLockoutTimeSpan.TotalMinutes} 分钟,请稍后重试", OperationResponseType.Error), new Claim[] { }); } if (signInResult.IsNotAllowed) { return(new OperationResponse("不允许登录。", OperationResponseType.Error), new Claim[] { }); } return(new OperationResponse("登录失败,用户名或账号无效。", OperationResponseType.Error), new Claim[] { }); } var jwtToken = _jwtBearerService.CreateToken(user.Id, user.UserName); //await _bus.PublishAsync(new IdentityEvent() { UserName = loginDto.UserName }); return(new OperationResponse("登录成功", new { AccessToken = jwtToken.AccessToken, NickName = user.NickName, UserId = user.Id.ToString(), AccessExpires = jwtToken.AccessExpires }, OperationResponseType.Success), jwtToken.claims); }