Я использую следующий подход для авторизации пользователей в одном из моих приложений. Поэтому я уверен, что вы можете внести некоторые изменения в этот код и получить то, что вам нужно:
Сначала вам нужно получить заголовок и снять с него Несущий.
string authHeaderValue = Request.Headers["Authorization"];
Затемвам нужно использовать ClaimsPrincipal для проверки вашего токена, который является частью System.Security.Claims
Это простое представление этого класса:
public ClaimsPrincipal GetClaims(string token)
{
var handler = new JwtSecurityTokenHandler();
var validations = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = SIGNING_KEY,
ValidateIssuer = false,
ValidateAudience = false
};
return handler.ValidateToken(token, validations, out var tokenSecure);
}
Обратите внимание, что ValidateToken является частьюSystem.IdentityModel.Tokens.Jwt;
Вот как убрать Несущего с токена
var tokenClaims = GetClaims(authHeaderValue.Substring("Bearer ".Length).Trim());
Затем вы можете искать Идентификацию пользователя или все, что вам нужно в вашем токене:
var userId = tokenClaims.Claims.Where(c => c.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value;
В моем случае я сохранил userId в NameIdentifier. Так что измените его в соответствии с вашими настройками.
Еще одна вещь. Убедитесь, что ваш токен не просрочен, пока вы тестируете приложение.
Надеюсь, это поможет.