public async Task GenerateTokenAsync(GetTokenCommand tokenCommand) { var now = DateTime.UtcNow; var userClaims = GetNamesUserRoles(await _identityRepository.GetUserRoleAsync(tokenCommand.UserId)); var userRoles = userClaims as string[] ?? userClaims?.ToArray(); var claims = PrepareClaims(tokenCommand.UserId, now, userRoles); var expires = GetExperienceTime(now); var signingCredentials = new SigningCredentials( new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_securitySettings.Key)), SecurityAlgorithms.HmacSha256); var jwt = new JwtSecurityToken( issuer: _securitySettings.Issuer, audience: _securitySettings.Audience, claims: claims, notBefore: now, expires: expires, signingCredentials: signingCredentials ); var token = new JwtSecurityTokenHandler().WriteToken(jwt); var refreshToken = await GenerateRefreshTokenAsync(tokenCommand.UserId); var objToken = ParsingTokenToDto(token, refreshToken); // var jsonToken = ParsingTokenToJson(objToken); var tokenDatabaseModel = _mapper.Map <Token>(objToken); await _tokenRepository.AddAsync(tokenDatabaseModel, tokenCommand.UserId); _cache.Add(GenerateCacheObject(tokenCommand.IdRequest, objToken)); }
public async Task <LastResponse> GetAuthTokenAsync() { var command = new GetTokenCommand(this) { HttpClient = HttpClient }; return(await command.ExecuteAsync()); }
public async Task RefreshTokenAsync(RefreshTokenCommand refreshTokenCommand) { var userId = await _tokenRepository.GetUserIdAsync(refreshTokenCommand.RefreshToken); var tokenCommand = new GetTokenCommand() { IdRequest = refreshTokenCommand.IdRequest, UserId = userId }; await GenerateTokenAsync(tokenCommand); }
public async Task <IActionResult> Login(GetTokenCommand request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var result = await _mediator.Send(request); if (result != null) { return(Ok(result)); } return(Unauthorized(new InvalidLoginResponse())); }
/// <summary> /// 刷新refreshToken[刷新access token时,refresh token也会重新生成] /// </summary> /// <param name="context">上下文</param> /// <returns></returns> public override void Receive(AuthenticationTokenReceiveContext context) { var getTokenCmd = new GetTokenCommand(); var removeTokenCmd = new RemoveTokenCommand(); getTokenCmd.TokenId = context.Token; _commandBus.Send(getTokenCmd); var refreshToken = getTokenCmd.ExecutionResult; if (refreshToken != null) { context.DeserializeTicket(refreshToken.ProtectedTicket); removeTokenCmd.TokenId = context.Token; _commandBus.Send(removeTokenCmd); } }
public async Task <User> Login([FromForm] GetTokenCommand command) => await Mediator.Send(command);
public async Task <ActionResult <string> > GetUserToken([FromBody] GetTokenCommand command) { var token = await Mediator.Send(command); return(Ok(token)); }
public async Task <IActionResult> Token([FromBody] GetTokenCommand getTokenCommand) { await this._busClient.PublishAsync(getTokenCommand); return(Accepted()); }