Я использую . Net Core для моего API, поэтому никаких представлений или чего-либо еще. Я также использую ASP. net Core Identity framework для авторизации пользователей в моей базе данных. Для входа в систему я использую этот код:
private string GenerateAuthenticationResult(ApplicationUser user)
{
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_jwtSettings.Secret);
var tokenDescriptor = new SecurityTokenDescriptor
{
// Things to be included and encoded in the token
Subject = new ClaimsIdentity(new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.Email),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(JwtRegisteredClaimNames.Email, user.Email),
new Claim("id", user.Id)
}),
// Token will expire 2 hours from which it was created
Expires = DateTime.UtcNow.AddHours(2),
//
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
}
Это работает как брелок для аутентификации действий пользователя, но как я могу узнать, с кем разговаривает мой сервер, при условии, что пользователь использовал токен, который я предоставил ранее? для входа в свой заголовок запроса (Bearer).
TL; dr
Я хочу извлечь идентификатор пользователя или адрес электронной почты пользователя из токена, указанного в заголовке запроса.
Спасибо.