Вы можете реализовать пользовательский ASP.NET WebApi DelegatingHandler (если вы хотите, чтобы проверка выполнялась для всех запросов) или ActionFilter (если вы хотите, чтобы проверка выполнялась для определенныхзапросов / на конечную точку), чтобы проверить, является ли токен все еще действительным, и прервать запрос, чтобы вернуть более значимый ответ.Подробности смотрите в ссылках.
Я реализовал простую для вашей справки:
public class CustomTokenCheckMessageHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (HasMyTokenExpired())
{
return new HttpResponseMessage
{
StatusCode = System.Net.HttpStatusCode.Unauthorized,
ReasonPhrase = "",
Content = new StringContent("Test") // See HttpContent for more https://msdn.microsoft.com/en-us/library/system.net.http.httpcontent(v=vs.118).aspx
};
}
return await base.SendAsync(request, cancellationToken);
}
public bool HasMyTokenExpired()
{
//Your custom logic here
return true;
}
}
Затем вам нужно зарегистрировать его в файле WebApiConfig, например:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
/*
All other config goes here
*/
//This line registers the handler
config.MessageHandlers.Add(new CustomTokenCheckMessageHandler());
}
}