gpt4 book ai didi

c# - 如何在 Controller 和操作级别使用授权属性?

转载 作者:太空狗 更新时间:2023-10-29 21:28:02 24 4
gpt4 key购买 nike

我已经实现了我自己的自定义授权属性。

该属性同时应用于 Controller 级别和操作级别。

这是我需要做的一个例子:

[ClaimsAuthorize(Roles = "AdvancedUsers")]
public class SecurityController : Controller
{
[ClaimsAuthorize(Roles = "Administrators")]
public ActionResult AdministrativeTask()
{
return View();
}

public ActionResult SomeOtherAction()
{
return View();
}
}

目前,如果用户具有 Administrator 角色但没有 AdvancedUsers 角色,则他无法执行“管理任务”。

即使用户未在 Controller 级别获得授权,我如何更改此行为以在操作级别执行安全检查?

目前,我能想到的唯一解决方案是实现 2 个属性:一个用于保护 Controller ,另一个用于保护操作。然后我会使用 Order 属性首先在操作级别执行那个。

但是,如果可能的话,我更喜欢具有单个属性的解决方案。

最佳答案

使用内置的[OverrideAuthorization]:

[ClaimsAuthorize(Roles = "AdvancedUsers")]
public class SecurityController : Controller
{
[OverrideAuthorization]
[ClaimsAuthorize(Roles = "Administrators")]
public ActionResult AdministrativeTask()
{
return View();
}

public ActionResult SomeOtherAction()
{
return View();
}
}

OverrideAuthorization 属性可用于 MVC 5(至少)及更高版本。用它修饰 Action 后,还要用新的 Role 修饰,这将对 Controller 级别的 Role 生效。

关于c# - 如何在 Controller 和操作级别使用授权属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19403013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com