gpt4 book ai didi

c# - Asp.net MVC 角色管理器

转载 作者:太空狗 更新时间:2023-10-29 21:40:35 25 4
gpt4 key购买 nike

我正在为我的 asp.net mvc 项目使用角色管理器和 Windows 身份验证我们有 2 个角色,分别是查看者和编辑者。

    <authentication mode="Windows" />
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>

编辑器可以访问整个应用程序,但查看器只能访问两个操作

我首先尝试为基本 Controller 添加 Authorize 属性,它只允许编辑器访问所有内容:

[Authorize(Roles = "Editors")]
public class BaseController : Controller

然后将 Authorize 属性添加到这两个操作:

[Authorize(Roles = "Viewers,Editors")]
public ActionResult Report(PaymentsUnallocatedAndQueriedModel model)

它不起作用,它不允许查看者访问现在有意义的任何操作。

我认为在每个操作的顶部重复授权属性不是一个好主意。

请问有没有更好的解决办法

最佳答案

你必须从树的角度来看这个。为了执行操作,您必须首先能够访问 Controller 。在这种情况下,您已将 Controller 限制在 Editors 组中,因此 Viewers 甚至无法到达那么远。最有可能更有帮助的是将 Controller 限制为 Viewers、Editors,然后在需要仅编辑权限的操作中指定这些权限。这将生成冗余属性,但如果您必须根据角色成员身份手动限制每个操作,请考虑代码成本。

[Authorize(Roles = "Viewers, Editors")]
public class BaseController : Controller
{

[Authorize(Roles = "Editors")]
public ActionResult EditReport(PaymentsUnallocatedAndQueriedModel model)
{
// Some editor only functionality
}

public ActionResult Report(PaymentsUnallocatedAndQueriedModel model)
{
// Some functionality for both. No attribute needed
}
}

关于c# - Asp.net MVC 角色管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178791/

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