Я пытаюсь выполнить проверку JWT для каждого действия, кроме действий входа в систему и регистрации, но я не могу найти способ сделать это в фильтрах действий, так как мне нужен токен, и он находится в this.Request.Headers.Это метод проверки, который отлично работает:
try
{
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
string sToken = token.Substring(7, token.Length - 7);
if (!tokenHandler.CanReadToken(sToken))
{
return false;
}
JwtSecurityToken jwtToken = tokenHandler.ReadToken(sToken) as JwtSecurityToken;
if (jwtToken == null)
{
return false;
}
TokenValidationParameters parameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
RequireExpirationTime = true,
ValidAudience = "http://localhost",
ValidIssuer = "http://localhost",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.Default.GetBytes(StandardValues.SecretKey))
};
SecurityToken securityToken;
ClaimsPrincipal principal = tokenHandler.ValidateToken(sToken, parameters, out securityToken);
if (principal == null)
{
return false;
}
}
catch (Exception ex)
{
return false;
}
return true;
И у меня есть несколько контроллеров, на которых я хочу выполнить проверку.Пожалуйста, дайте мне знать, как я могу выполнить эту проверку вне и перед действиями (в фильтр действий или другим способом) при отправке токена в качестве параметра для метода проверки.