Невозможно показать дополнительные свойства в ответе токена - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть следующий код для создания токена:

 var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        //context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
        using (var db = new mobileappEntities())
        {
            var user =
            db.tbl.Where(u => u.Mobile_Number == context.UserName && u.Password == context.Password).FirstOrDefault();
            if (user != null)
            {
                var props = new AuthenticationProperties(new Dictionary<string, string>
                        {
                            {
                                "userName", user.First_Name
                            },
                            {
                                 "Student_PId", user.Student_PId.ToString()
                            }
                         });
                var ticket = new AuthenticationTicket(identity, props);
                context.Validated(ticket);
            }
            else
            {
                context.SetError("Provided username and password is incorrect");
                context.Rejected();
            }
        }

И я получаю следующий ответ:

{
"access_token": "f2q-bPTQT_d6op8a73rR6Xvc7iie4rLXL-qill2pnTsbKdzkYPDA6a1DpKM_HB--FKf9P4uOfl_4TLxQpvy1TIGKSeF2kR6fHmpTsqKBBe4uKwrwrZswQyZcFwgFFQ2qgqD4aWJP5_mi2seRviHaFLie6fGhWmFBIGQgVBSalW0HVLKe4Gtg7-1rqcI0jRQTOr1Cgz5pEA3WA1-F-6Z9ui-pG6Nv8ynCI5vjUyA2loZcrmeo5CbvlCNNGCoAPB86",
"token_type": "bearer",
"expires_in": 1199
}

Но я хочу получить ответ с идентификатором пользователя

{
"access_token": "f2q-bPTQT_d6op8a73rR6Xvc7iie4rLXL-qill2pnTsbKdzkYPDA6a1DpKM_HB--FKf9P4uOfl_4TLxQpvy1TIGKSeF2kR6fHmpTsqKBBe4uKwrwrZswQyZcFwgFFQ2qgqD4aWJP5_mi2seRviHaFLie6fGhWmFBIGQgVBSalW0HVLKe4Gtg7-1rqcI0jRQTOr1Cgz5pEA3WA1-F-6Z9ui-pG6Nv8ynCI5vjUyA2loZcrmeo5CbvlCNNGCoAPB86",
"token_type": "bearer",
"expires_in": 9875,
"UserID": 1234
}

Как мне этого добиться?

1 Ответ

0 голосов
/ 26 февраля 2019

Добавьте следующий метод к вашему CustomOAuthProvider (также полученному из OAuthAuthorizationServerProvider):

   public override Task TokenEndpoint(OAuthTokenEndpointContext context)
    {
        foreach (KeyValuePair<string, string> property in context.Properties.Dictionary)
        {
            context.AdditionalResponseParameters.Add(property.Key, property.Value);
        }
        return Task.FromResult<object>(null);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...