public UserTokenVM BuildUserToken(UserVM userVM) { var jwtSetting = new JwtSetting(); _config.Bind("JwtSetting", jwtSetting); //UserInfo var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim("userId", userVM.UserId.ToString()), new Claim("name", userVM.Name), }; var expireIn = DateTime.UtcNow.AddMinutes(jwtSetting.ExpireMinutes); var jwtToken = GenerateJwtToken(jwtSetting, claims, expireIn); var tokenResponse = new UserTokenVM() { Token = jwtToken, ExpireIn = new DateTimeOffset(expireIn).ToUnixTimeSeconds(), UserName = userVM.Name }; return(tokenResponse); }
public IActionResult Post(UserTokenVM request) { try { var result = _service.GetToken(request); return(Ok(result)); } catch (Exception ex) { return(StatusCode(500, new { ex.Message, ex.InnerException })); } }
public JWTokenVM GetToken(UserTokenVM request) { try { var model = new JWTokenVM { Token = GenerateJwtToken(request), RefreshToken = this.GenerateRandomRefreshToken() }; // Build and Save model to DB here return(model); } catch (Exception ex) { // Add some logs here throw ex; } }
private string GenerateJwtToken(UserTokenVM request) { var claims = new List <Claim> { new Claim("userId", request.UserId.ToString()), new Claim("roleId", request.RoleId.ToString()), new Claim(JwtRegisteredClaimNames.Sub, request.Email), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Auth:JWToken:key"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var expires = DateTime.Now.AddSeconds(double.Parse(_configuration["Auth:JWToken:expireValueSeconds"])); var token = new JwtSecurityToken( _configuration["Auth:JWToken:issuer"], _configuration["Auth:JWToken:issuer"], claims, expires: expires, signingCredentials: creds ); return(new JwtSecurityTokenHandler().WriteToken(token)); }