private async Task <dynamic> GenerateToken(string username) { var user = await _userManager.FindByNameAsync(username); var roles = await _role.GetRolesByUserName(username); var claims = new List <Claim> { new Claim(ClaimTypes.Name, username), new Claim(ClaimTypes.NameIdentifier, user.Id), new Claim(JwtRegisteredClaimNames.Nbf, new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds().ToString()), new Claim(JwtRegisteredClaimNames.Exp, new DateTimeOffset(DateTime.Now.AddDays(1)).ToUnixTimeSeconds().ToString()), }; foreach (var role in roles) { claims.Add(new Claim(ClaimTypes.Role, role.Name)); } string key = _configuration.GetValue <string>("Secrets:SecurityKey"); var token = new JwtSecurityToken( new JwtHeader( new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key)), SecurityAlgorithms.HmacSha256)), new JwtPayload(claims)); var output = new { Access_Token = new JwtSecurityTokenHandler().WriteToken(token), UserName = username }; return(output); }