在ASP中定制承载令牌JSON结果.. NET WebApi 2

本文关键字:结果 JSON NET WebApi 令牌 ASP | 更新日期: 2023-09-27 18:09:33

我来演练一下这个官方ASP。. NET教程,并将承载令牌发布如下JSON。

{
    "access_token":"boQtj0SCGz2GFGz[...]",
    "token_type":"bearer",
    "expires_in":1209599,
    "userName":"Alice",
    ".issued":"Mon, 14 Oct 2013 06:53:32 GMT",
    ".expires":"Mon, 28 Oct 2013 06:53:32 GMT"
}

我想添加用户配置文件属性以及上述结果,以减少来自客户端的请求数量。示例如下:

{
    "access_token":"boQtj0SCGz2GFGz[...]",
    "token_type":"bearer",
    "expires_in":1209599,
    "userName":"Alice",
    ".issued":"Mon, 14 Oct 2013 06:53:32 GMT",
    ".expires":"Mon, 28 Oct 2013 06:53:32 GMT",
    "Notifications":35,
    "IsEventMember":true,
    "Promotion":324372
}

我使用的oauth提供程序来自默认的ASP。. NET模板(ApplicationOAuthProvider.cs)和OAuthOption如下:

            OAuthOptions = new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
            AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
            AllowInsecureHttp = true
        };

我怎样才能做到呢?

请注意,我的问题不同于添加额外的声明。

在ASP中定制承载令牌JSON结果.. NET WebApi 2

解决方案如下:

public override async Task TokenEndpoint(OAuthTokenEndpointContext context)
{
    context.AdditionalResponseParameters.Add("username", "user@mail.com");
    return Task.FromResult<object>(null);
}