public async Task <(OperationResponse item, Claim[] cliams)> ChangePassword(ChangePassInputDto dto) { dto.NotNull(nameof(dto)); var userId = _principal.Identity?.GetUesrId <string>(); var user = await _userManager.FindByIdAsync(userId); if (user == null) { return(new OperationResponse("此用户不存在!!", OperationResponseType.Error), new Claim[] { }); } var signInResult = await _signInManager.CheckPasswordSignInAsync(user, dto.OldPassword, true); if (!signInResult.Succeeded) { return(OperationResponse.Error("密码不正确!!"), new Claim[] { }); } var result = await _userManager.ChangePasswordAsync(user, dto.OldPassword, dto.NewPassword); if (!result.Succeeded) { return(result.ToOperationResponse(), new Claim[] { }); } var jwtToken = _jwtBearerService.CreateToken(user.Id, user.UserName); return(new OperationResponse("修改密码成功!!", new { AccessToken = jwtToken.AccessToken, NickName = user.NickName, UserId = user.Id.ToString(), AccessExpires = jwtToken.AccessExpires }, OperationResponseType.Success), jwtToken.claims); }
public async Task <(OperationResponse item, Claim[] cliams)> Login(LoginInputDto input) { input.NotNull(nameof(input)); var user = await _userManager.FindByNameAsync(input.UserName); if (user == null) { return(new OperationResponse(ResultMessage.UserNameNotFind, OperationEnumType.Error), new Claim[] { }); } var result = await _userManager.CheckPasswordAsync(user, input.Password); if (!result) { return(new OperationResponse(ResultMessage.PassWordNotCheck, OperationEnumType.Error), new Claim[] { }); } var jwtToken = _jwtBearerService.CreateToken(user.Id, user.UserName); return(new OperationResponse(ResultMessage.LoginSusscess, new { AccessToken = jwtToken.AccessToken, NickName = user.NickName, UserId = user.Id.ToString(), AccessExpires = jwtToken.AccessExpires }, OperationEnumType.Error), new Claim[] { }); }
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); }
private async Task <JsonWebToken> CreateJwtToken(User user, RequestClientType clientType = RequestClientType.Browser) { IServiceProvider provider = HttpContext.RequestServices; IJwtBearerService jwtBearerService = provider.GetService <IJwtBearerService>(); JsonWebToken token = await jwtBearerService.CreateToken(user.Id.ToString(), user.UserName, clientType); return(token); }
private async Task <JwtTokenResponse> GenerateAndSaveTokenAsync(Client client) { var tokenResult = _jwtBearer.CreateToken(client); client.RefreshToken = tokenResult.RefreshToken; client.Token = tokenResult.Token; _repository.Update(client); return(await _repository.SaveAsync() <= 0 ? null : tokenResult); }
public async Task LoginAsync_ShouldReturnJwtTokenResponse_WhenInputIsValid() { // Arrange var clientToLogin = new ClientLoginRequest { Login = "******", Password = "******" }; var client = new Client(); var jwtToken = new JwtTokenResponse { Token = "token", RefreshToken = "refreshToken" }; _clientRepository.FindByLoginAsync(Arg.Any <string>()).Returns(client); _passwordHasher.Validate(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(true); _jwtBearer.CreateToken(client).Returns(jwtToken); _clientRepository.SaveAsync().Returns(1); // Act var token = await _sut.LoginAsync(clientToLogin); // Assert token.Should().NotBeNull(); token.Should().Be(jwtToken); }