ASP.NET Core 2.2 MVC 将参数传递给授权策略
ASP.NET Core 2.2 MVC passing argument to authorization policy
所以我们或多或少都熟悉 ASP.Net MVC 和新的 policy based authorization 中的授权,其中最常用的示例是名为 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 年的员工,一种是针对工作超过 1 年的员工,一种是针对在公司工作 5 年以上的员工等等等等等等。
不幸的是,我在网上找不到太多关于此的信息,这就是为什么我要问这是否可以在 ASP.Net MVC 中以某种方式实现?
谢谢
您必须创建参数化授权属性。请在此处查看此示例 https://docs.microsoft.com/en-us/aspnet/core/security/authorization/iauthorizationpolicyprovider?view=aspnetcore-2.2
它基于您使用的相同策略。
所以我们或多或少都熟悉 ASP.Net MVC 和新的 policy based authorization 中的授权,其中最常用的示例是名为 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 年的员工,一种是针对工作超过 1 年的员工,一种是针对在公司工作 5 年以上的员工等等等等等等。
不幸的是,我在网上找不到太多关于此的信息,这就是为什么我要问这是否可以在 ASP.Net MVC 中以某种方式实现?
谢谢
您必须创建参数化授权属性。请在此处查看此示例 https://docs.microsoft.com/en-us/aspnet/core/security/authorization/iauthorizationpolicyprovider?view=aspnetcore-2.2 它基于您使用的相同策略。