【问题标题】:Dynamic permissions to users对用户的动态权限
【发布时间】:2013-04-12 16:41:46
【问题描述】:

我正在处理一个 asp.net 网页的现有代码,其中控制器中的方法根据用户所处的角色受到限制,例如:

    namespace Principal.Controllers
    {
       [Authorize]
       public class MyController: Controller
       {
          [Authorize(Roles = "Role1,Role2,Role3")]
          public method1() {...}
       }
    }

问题是声明允许的角色的部分:

    [Authorize(Roles = "Role1,Role2,Role3")]

我想让字符串动态化,所以我可以根据管理员设置的属性从方法中返回它,但是它总是给我一些奇怪的错误,例如“错误 3 属性参数必须是常量表达式,属性参数类型的typeof表达式或数组创建表达式"

任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net-mvc-4


    【解决方案1】:

    如您所见,定义属性时只能使用常量;这是因为属性被编译到代码中 - 你不能使用编译器在编译时不知道的表达式。

    您可以做的是创建一个继承自AuthorizeAttribute 类的新属性,并覆盖OnAuthorize。然后你可以在这里实现你的自定义角色逻辑。

    【讨论】:

    • 正是我推荐的。但是我要补充一点,如果您只想使角色动态化,您应该能够简单地覆盖OnAuthorization 并使用您需要的任何角色填充角色字符串然后调用base.OnAuthorization(filterContext);跨度>
    猜你喜欢
    • 2012-04-28
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2017-08-15
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多