В IIS у меня включена антоним и аутентификация Windows.В коде я хочу проверить, является ли IP-адрес запроса не маршрутизируемым, если не , я хочу, чтобы браузер запросил учетные данные.
Я попытался вернуть код состояния 401,но это не заставляет браузер бросать вызов.Что мне не хватает?Есть лучший способ сделать это?Как я могу создать пользовательский атрибут, похожий на Authorize, чтобы добиться того же поведения (что-то вроде LocalOnly) для методов WebAPI?
Вот что я имею в методе Configure в Startup.cs:
app.Use(async (context, next) =>
{
var ip = context.Connection.RemoteIpAddress.ToString();
var isInternal = Regex.IsMatch(ip, @"(^127\.)|(^(0)?10\.)|(^172\.(0)?1[6-9]\.)|(^172\.(0)?2[0-9]\.)|(^172\.(0)?3[0-1]\.)|(^169\.254\.)|(^192\.168\.)");
if (!isInternal && !context.User.Identity.IsAuthenticated) {
context.Response.StatusCode = 401;
} else
{
await next();
}
});