在 ASP.NET Core 2.0 中传递 JSON 对象作为 JWT 令牌的声明

jus*_*tme 5 c# jwt asp.net-core

是否可以将 JSON 对象作为 JWT 令牌或对象列表的声明传递(如下例所示)?

{
  "nickname": [
    {
      "external_nickname": "tomas",
      "internal_nickname": "t_omas"
    }, 
    {
      "external_nickname": "malex",
      "internal_nickname": "alexander014"
    } 
  ]
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我只能在 token 中传递一个昵称

"nickname" : "tomas"
Run Code Online (Sandbox Code Playgroud)

或者我可以传递一个数组

"nickname" : ["nickname1","nickname2"]
Run Code Online (Sandbox Code Playgroud)

但这些都不能让我满意。

编辑:

使用 Avin Kavish 方法,我在 JSON 对象中得到了额外的斜杠。我不想要他们。如何摆脱它们?

 "nickname": "[{\"external_nickname\":\"tomas\",\"internal_nickname\":\"t_omas\"}]"
Run Code Online (Sandbox Code Playgroud)

Avi*_*ish 2

是的,先序列化。

var claim = new Claim("nickname", JsonConvert.SerializeObject(nicknames));
Run Code Online (Sandbox Code Playgroud)

为了使用昵称,您需要将字符串反序列化回普通的旧对象。

在 JavaScript 中,

const nicknames = JSON.Parse(value)
Run Code Online (Sandbox Code Playgroud)

在 C# 中,

const nicknames = JSON.Parse(value)
Run Code Online (Sandbox Code Playgroud)