gpt4 book ai didi

asp.net-mvc - ASP.NET MVC : Can I say [Authorize Roles ="Administrators"] on the Controller class, 但有一项公开行动?

转载 作者:行者123 更新时间:2023-12-04 17:59:00 24 4
gpt4 key购买 nike

我开始使用默认项目的 AccountController ,但我已将其扩展/更改得面目全非。但是,与原版一样,我有一个 LogOnLogOff行动。

显然,LogOn每个人都必须能够获得行动。但是,由于我已向此 Controller 添加了许多其他操作(用于创建和编辑用户),我希望 99% 的操作需要管理员角色成员身份。

我可以用 [Authorize Roles="Administrators"] 来装饰我的所有 Action 但有一种风险我会忘记。我宁愿通过使用该属性装饰 Controller 类本身来使其默认安全,然后放宽对我的 LogOn 的要求方法。我可以这样做吗?

(如,我可以在不创建自定义类等的情况下开箱即用地做到这一点吗?我不想让事情变得过于复杂。)

最佳答案

要在操作级别覆盖 Controller 属性,您必须创建自定义属性,然后将自定义属性的 Order 属性设置为高于 Controller AuthorizeAttribute 的值。我相信这两个属性仍然会被执行,除非您的自定义属性生成具有即时效果的结果,例如重定向。

Overriding controller AuthorizeAttribute for just one action了解更多信息。

因此,我相信在您的情况下,您只需要在操作上添加 AuthorizeAttribute,而不是在 Controller 级别。但是,您可以创建一个单元测试以确保所有操作(除了 LogOn)都具有 AuthorizeAttribute

关于asp.net-mvc - ASP.NET MVC : Can I say [Authorize Roles ="Administrators"] on the Controller class, 但有一项公开行动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2537307/

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