向不记名令牌 json 添加更多值

Vic*_*vez 3 c# json asp.net-web-api owin bearer-token

我想在他们成功登录后返回用户名以显示在我的网络应用程序的右上角。我想将它与承载令牌返回的 json 一起发送。为了生成令牌身份验证,我使用了 ASP.NET Web API 和 Owin middlehawe。

{   
  "access_token": "blah",
  "token_type": "bearer",
  "expires_in": 599
}
Run Code Online (Sandbox Code Playgroud)

我希望回报是这样的

{   
  "access_token": "blah",
  "token_type": "bearer",
  "expires_in": 599,
  "displayusername":"Hi Mundo"
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过索赔,但那些并没有给出我想要的结果。

我曾尝试使用 AuthenticationProperties 但不起作用

 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
        if (validation works)
        {
           // add claims

            var moreInfo = new AuthenticationProperties(new Dictionary<string, string> { { "username", "Don"}, { "Department","MIS"} });

            var ticket = new AuthenticationTicket(identity, moreInfo);
            context.Validated(ticket);
        }
        else
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何向 owin 不记名令牌返回的 json 添加更多值?。

小智 5

覆盖TokenEndpointResponse您正在检查有效性的同一类并返回附加字段,如下面的示例所示

public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
{
    string thisIsTheToken = context.AccessToken;
    //add user Id and status as additional response parameter
    context.AdditionalResponseParameters.Add("displayusername", "Hi Mundo");
    context.AdditionalResponseParameters.Add("Status", "1");     
    return base.TokenEndpointResponse(context);
}
Run Code Online (Sandbox Code Playgroud)