是否可以将JSON对象作为JWT令牌或对象列表的声明传递(如下面的示例所示)?
{
"nickname": [
{
"external_nickname": "tomas",
"internal_nickname": "t_omas"
},
{
"external_nickname": "malex",
"internal_nickname": "alexander014"
}
]
}
到目前为止,我只能在令牌中传递一个昵称
"nickname" : "tomas"
或者我可以传递一个数组
"nickname" : ["nickname1","nickname2"]
但是这些都不满足我。
编辑:
使用Avin Kavish方法,我在JSON Object中得到了额外的斜线。我不要如何摆脱它们?
"nickname": "[{\"external_nickname\":\"tomas\",\"internal_nickname\":\"t_omas\"}]"
答案 0 :(得分:0)
是的,请先对其进行序列化。
var claim = new Claim("nickname", JsonConvert.SerializeObject(nicknames));
要使用昵称,您需要从字符串反序列化为普通的旧对象。
在javascript中,
const nicknames = JSON.Parse(value)
在C#中,
var nicknames = JsonConvert.DeserializeObject<T>(value) // <-- where T is your type
答案 1 :(得分:0)
我使用 JWT NuGet 包。
Install-Package JWT
代码:
var payload = new
{
nickname = new[]
{
new {external_nickname = "tomas", internal_nickname = "t_omas"},
new {external_nickname = "malex", internal_nickname = "alexander014"}
}
};
var encoder = new JwtEncoder(new HMACSHA256Algorithm(), new JsonNetSerializer(), new JwtBase64UrlEncoder());
var token = encoder.Encode(payload, "your_secret");