ASP.NET Core 2.2 MVC передает аргумент в политику авторизации - PullRequest
0 голосов
/ 20 сентября 2019

Таким образом, мы все более или менее знакомы с авторизацией в ASP.Net MVC и новой авторизацией на основе политики , где наиболее часто используемым примером является политика под названием atLeast21, которая предоставляет доступ к определенному ресурсу.только для пользователей 21 года или старше.

Но что, если бы я хотел, чтобы политика использовалась для нескольких возрастов и передавал возраст в качестве параметра, как в следующем примере:

[Authorize("AtLeast", new { age = 21 })]
public IActionResult Index()
{
    //some code here
    return View();
}

[Authorize("AtLeast", new { age = 25 })]
public IActionResult Index2()
{
    //some code here
    return View();
}

Таким образом, я мог бы использовать одну и ту же политику (AtLeast) несколько раз, и мне не нужно было бы создавать политику для каждого возраста, который я хочу проверить.

Так что, конечно, не так много вариантов использованиядля этого, если мы говорим об ограничении возраста пользователя, но у него определенно много вариантов использования, если я хочу сказать, что в контроллере должно быть несколько действий, и один предназначен для сотрудников, работающих в компании в течение 1 года, один для сотрудников, работающих большечем один год, один предназначен для сотрудников, работающих более 5 лет в компании и т. д., и многих других вариантов использования.

К сожалению, яНе могу найти много информации об этом в Интернете, поэтому я спрашиваю, достижимо ли это вообще в ASP.Net MVC тем или иным образом или нет?

Спасибо

1 Ответ

1 голос
/ 20 сентября 2019

Вы должны создать параметризованный атрибут авторизации.Пожалуйста, посмотрите на этот пример здесь https://docs.microsoft.com/en-us/aspnet/core/security/authorization/iauthorizationpolicyprovider?view=aspnetcore-2.2 Он основан на той же политике, которую вы использовали.

...