У меня есть простое приложение ASP.Net Core 2.1 MVC, и в одном из контроллеров я хотел бы реализовать действие, которое принимает запросы только локально (т. Е. Запрос исходит от 127.0.0.1 или с того же адреса, что и IP-адрес сервера).
Я искал фильтр в ASP.Net Core, который подходит для этой цели, но, похоже, не могу его найти. Я могу использовать AuthorizeAttribute, например, [Authorize(Policy = "LocalOnly")]
и регистрация соответствующей политики в ConfigureServices при запуске:
services.AddAuthorization(options =>
{
options.AddPolicy("LocalOnly", policy =>
{
policy.RequireAssertion(context =>
{
if (context.Resource is AuthorizationFilterContext mvcContext)
{
return mvcContext.HttpContext.Request.IsLocal();
}
return false;
});
});
});
, где IsLocal()
- метод расширения HttpRequest
.
Однако я не думаю, что это правильный способ сделать это - то, что я пытаюсь сделать, на самом деле не авторизация, и, поскольку в моей программе нет аутентификации, возникшая ошибка не является правильной либо.
Есть ли простой и законный способ делать то, что я хочу, с помощью фильтров? Или это на самом деле то, что должно быть сделано в логике действий в контроллерах? Или, может быть, вся эта идея проверки локального запроса не очень правильна для начала?
Большое спасибо за любую помощь.