gpt4 book ai didi

c# - 如何在 Asp.NET Core WEB API 中使用 .Net (C#) 在有效负载中创建具有自定义 JSON 声明的 JWT token

转载 作者:行者123 更新时间:2023-11-30 20:15:45 26 4
gpt4 key购买 nike

我正在用下面的代码和简单的 JSON 数据生成 token

  [HttpPost("Token")]
public IActionResult Token(string userid)
{
if ((!string.IsNullOrEmpty(userid)))
{
var user = webuserprovider.GetWebUser(userid);

// validate for 0 records
if (user.Count() > 0)
{
// if user return 1 row
var claimsdata = new[]
{
new Claim("id",user.First().UserID),
};

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("secretKey"));
var signInCred = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
users:{ "id": user.First().UserID},
issuer: "mysite.com",
audience: "yoursite.com",
expires: DateTime.Now.AddMinutes(3),
claims: claimsdata,
signingCredentials: signInCred
);
var jwt = new JwtSecurityTokenHandler().WriteToken(token);
return Ok(new {jwt});
// return Ok( new JwtSecurityTokenHandler().WriteToken(token) );
}
else
{// return BadRequest(new { message = "UserID does not exist" }); }
// return BadRequest("Could not verify user");
return NotFound();
}
}
return Unauthorized();

}
}
}

JWT 负载数据:

     {
"id": "1234",
"exp": 1538637844,
"iss": "mysite.com"
}

如何在 Asp.net Core Web API REST 的 C# 中使用自定义声明创建负载数据,如下所示?在负载数据中的 { } 内使用用户 ID -->

  {
"id": "1234",
"exp": 1538637844,
"iss": "mysite.com"
"user": {
"id" :"user1"
}
}

最佳答案

代码如下

[HttpPost("Token")]
public IActionResult Token(string userid)
{
if ((!string.IsNullOrEmpty(userid)))
{
var user = webuserprovider.GetWebUser(userid);

// validate for 0 records
if (user.Count() > 0)
{
// if user return 1 row
var claimsdata = new[]
{
new Claim("subject","custom claims"),
};

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("secretKey"));
var signInCred = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
users:{ "id": user.First().UserID},
issuer: "mysite.com",
audience: "yoursite.com",
expires: DateTime.Now.AddMinutes(3),
claims: claimsdata,
signingCredentials: signInCred
);
//custom claims as per requirements
var jsonu = new { id = user.First().UserID };
token.Payload["user"] = jsonu;
//End of custom claims
var jwt = new JwtSecurityTokenHandler().WriteToken(token);
return Ok(new {jwt});
// return Ok( new JwtSecurityTokenHandler().WriteToken(token) );
}
else
{// return BadRequest(new { message = "UserID does not exist" }); }
// return BadRequest("Could not verify user");
return NotFound();
}
}
return Unauthorized();
}

最后的有效载荷 PAYLOAD: DATA

{
"subject": "custom claims",
"exp": 1538651961,
"iss": "mysite.com",
"user": {
"id": "1234"
}
}

关于c# - 如何在 Asp.NET Core WEB API 中使用 .Net (C#) 在有效负载中创建具有自定义 JSON 声明的 JWT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52641598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com