В ASP.NET Core разрешен необязательный идентификатор в маршруте

Мои маршруты настроены как

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "areaRoute",
        template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

То, что я хочу сделать, это чтобы URL был похож

/Company/{cfccc978-bfec-4425-a7ff-77ca7509a807}/Equipment/Index
/Company/{cfccc978-bfec-4425-a7ff-77ca7509a807}/Equipment/Edit/{f3628bf8-0e1d-4ae8-bf78-36feff9dfca5}
OR
/Company/Equipment/Index
/Company/Equipment/Edit/{f3628bf8-0e1d-4ae8-bf78-36feff9dfca5}

Если CompanyId опущен, то будет использоваться значение зарегистрированного пользователя.

Если присутствует CompanyId, то я должен убедиться, что у пользователя есть к нему доступ, либо он должен иметь этот CompanyId для своего пользователя, либо быть в роли администратора.

Я должен признать, что не знаю, с чего начать.

Я думаю, что мне нужно изменить отображение areaRoute, чтобы включить CompanyID, но тогда как мои методы контроллера должны его использовать? Я хотел бы избежать необходимости кодировать каждый метод действия, чтобы получить от пользователя идентификатор компании, чтобы сделать его как можно более плавным.

Это новое приложение, так что все идет, не нужно беспокоиться о нарушении существующей функциональности.

0 ответов

Другие вопросы по тегам