2014-06-20 21 views
5

Tôi duyệt qua this official ASP.NET tutorial và mã thông báo mang được xuất bản dưới dạng JSON.Tùy chỉnh kết quả JSON mã thông báo Bearer trong ASP.NET WebApi 2

{ 
    "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" 
} 

Tôi muốn thêm thuộc tính hồ sơ người dùng cùng với lần gửi lại ở trên để giảm số lượng yêu cầu từ khách hàng. Ví dụ như sau ...

{ 
    "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 
} 

Nhà cung cấp oauth tôi sử dụng là từ ASP.NET mặc định mẫu (ApplicationOAuthProvider.cs) và OAuthOption là như dưới đây.

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

Tôi làm cách nào?

Lưu ý rằng câu hỏi của tôi khác với adding extra claims.

+1

tôi thấy rằng câu hỏi của tôi được nhân đôi: http://stackoverflow.com/q/24078905/361100 – Youngjae

Trả lời

10

Vâng đây là giải pháp:

public override async Task TokenEndpoint(OAuthTokenEndpointContext context) 
{ 
    context.AdditionalResponseParameters.Add("username", "[email protected]"); 

    return Task.FromResult<object>(null); 
} 
Các vấn đề liên quan