2017-01-05 5 views
0

Я использую пакет Microsoft.Owin.Security.Jwt nuget для защиты моего webapi. Он устанавливает HttpContext.Current.User, как ожидалось, когда я передаю токен webapi в качестве заголовка в мои запросы.настройка HttpContext.Current.User из JWT Token

Поскольку бизнес-логика инкапсулирована, я не мог найти момент установки HttpContext.Current.User.

Вместо поиска правильной заявки с использованием identity.Claims все время, я хотел бы извлечь нужную мне информацию и установить собственный класс как HttpContext.Current.User. Можно ли использовать Microsoft.Owin.Security.Jwt?

ответ

1

Не совсем уверен, что вы имеете в виду. HttpContext.Current.User устанавливается автоматически в тот момент, когда ваш токен действителен (соответствует тайне и не истек). Что вы можете сделать, это написать некоторые методы расширения для извлечения других значений. Например:

public static class IdentityHelpers 
{ 
    public static string GetUserId(this IIdentity identity) 
    { 
     ClaimsIdentity claimsIdentity = identity as ClaimsIdentity; 

     if (claimsIdentity.Claims.FirstOrDefault(x => x.Type == "UserId") != null) { 
      return claimsIdentity.Claims.FirstOrDefault(x => x.Type == "UserId").Value; 
     } 

     return "0"; 
    } 

    public static string GetUserName(this IIdentity identity) 
    { 
     return identity.Name; 
    } 
} 

Вы тогда сможете позвонить, например:

HttpContext.Current.user.GetUserName(); 

или

HttpContext.Current.User.GetUserId(); 

где бы вы включили этот класс.

+0

Сейчас я решаю этот путь. Я хотел бы перехватить момент, когда Owin устанавливает этот HttpContext.Current.User и устанавливает собственный класс со значениями, извлеченными из формулы. –

+0

Жаль, вы не можете помочь. Я считаю, что целая концепция Owin довольно нечеткая, и у меня также есть много вспомогательных методов, которые извлекают мои претензии, как я показал в своем ответе, чтобы преодолеть это. Я буду следовать этому вопросу, надеюсь, будет хороший ответ – Verthosa

Смежные вопросы