При использовании Abp (www.abp.io) существует много предопределенных конечных точек API, таких как
/api/account/register
/api/identity/users
а также маршруты MVC, такие как
Как отключить эти конечные точки или заменить их собственными версиями?
Фон илиcontext: Конечная точка регистра по умолчанию не должна предоставляться, потому что процесс регистрации включает специальный рабочий процесс, поэтому мы хотим отключить возможность создания случайных пользователей через API или маршрут MVC (/Account/Register
).
Volo.Abp.Account.AccountController
определяет конечную точку api/account/register
и имеет атрибут RemoteServiceAttribute
для предоставления его через автоматически сгенерированный API.
[RemoteService]
[Area("account")]
[Route("api/account")]
public class AccountController : AbpController, IAccountAppService
...
Попытка изменить свойства атрибута не сработала. До сих пор единственным решением было удаление маршрутов при настройке маршрутов MVC по умолчанию с обратной стороной, что конечные точки на самом деле недостижимы (404), но по-прежнему появляются в документах Swagger (/swagger/index.html
).
// TODO: Find a better way to remove unused routes from api
app.UseMvcWithDefaultRouteAndArea(options =>
{
var routesToRemove = new[]
{
"api/account/register",
"account/register",
"api/abp/multi-tenancy",
"api/multi-tenancy",
"api/abp/features",
"api/identity/users",
};
foreach (var route in routesToRemove)
{
foreach (var dataSource in options.DataSources)
{
var endpoints = dataSource.Endpoints.Cast<RouteEndpoint>();
var routeConfig = endpoints.FirstOrDefault(x =>
x.RoutePattern.RawText.ToLowerInvariant().StartsWith(route));
if (routeConfig != null)
{
((List<Endpoint>) dataSource.Endpoints).Remove(routeConfig);
}
}
}
});