/// <summary> /// /// </summary> /// <param name="courierId"></param> /// <param name="remember"></param> /// <returns></returns> public async Task <string> GenerateJWTokenAsync(int courierId, bool remember = false) { var courier = await this.GetCourierByIdAsync(courierId); if (courier == null) { return(null); } var claims = new List <Claim> { new Claim(ClaimTypes.Name, courier.Phone), new Claim(ClaimTypes.NameIdentifier, courier.Id.ToString()), new Claim("id", courier.Id.ToString()), }; // JwtSettingsDto jwtSettings = GetSettings(); var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Secret)); SigningCredentials _signingCredentials = new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha256); var accessExpiration = remember ? jwtSettings.RememberMeExpiration : jwtSettings.AccessExpiration; var jwtToken = new JwtSecurityToken( jwtSettings.Issuer, jwtSettings.Audience, claims, expires: DateTime.UtcNow.AddMinutes(accessExpiration), signingCredentials: _signingCredentials ); JwtSecurityTokenHandler _jwtSecurityTokenHandler = new JwtSecurityTokenHandler(); return(_jwtSecurityTokenHandler.WriteToken(jwtToken)); }
private static TokenValidationParameters GetTokenValidationParameters(JwtSettingsDto jwtSettings) { return(new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtSettings.Secret)), ValidIssuer = jwtSettings.Issuer, ValidAudience = jwtSettings.Audience, ValidateIssuer = false, ValidateAudience = false, ValidateLifetime = true, ClockSkew = TimeSpan.Zero, }); }