![]() |
1
21
我通常使用一个带有一串字符串常量的类。这不是一个完美的解决方案,因为你需要记住在任何地方都坚持使用它,但至少它可以消除打字错误的可能性。
|
![]() |
2
48
使用magic字符串可以灵活地在authorize属性中声明多个角色(例如,[authorize(roles=“admin,moderator”)],在使用强类型解决方案时,这些角色往往会丢失。但下面是如何在保持强类型化的同时保持这种灵活性。 在使用位标志的枚举中定义角色:
覆盖授权属性:
现在,如果您可以像这样使用myauthorizeattribute:
以上操作将仅授权至少在所列角色之一(管理员、版主或编辑器)中的用户。该行为与MVC的默认authorizeattribute相同,但不包含magic字符串。 如果使用此技术,以下是iprincipal上的一个扩展方法,它可能也很有用:
您可以使用如下扩展方法:
|
![]() |
3
10
虽然它不使用枚举,但我使用了下面的解决方案,在这里我们将authorize过滤器子类化,以便在构造函数中接受长度可变的角色名称参数。使用这个方法以及在某个地方的const变量中声明的角色名,我们可以避免使用magic字符串:
(我在博客中更详细地介绍了这一点- http://tech-journals.com/jonow/2011/05/19/avoiding-magic-strings-in-asp-net-mvc-authorize-filters ) |
![]() |
4
3
它不是
那个
难以定制
对其进行子类型化,为枚举类型添加自定义属性,然后调用
+1马蒂也是,因为警察也是个不错的选择。 |
![]() |
5
3
我接受了Johnnyo的回答,但更改了枚举项以使用
枚举示例:
扩展方法:
自定义属性:
获取描述值的扩展方法:
|
![]() |
6
2
我使用了一个静态类来定义一组字符串常量,正如Matti建议的那样,在我当前的项目中,我使用下面的扩展方法和一个枚举。两种方法都很有效。
|
![]() |
Dev · 在laravel rest api中按特定角色获取所有用户 2 年前 |
![]() |
Costin · aws批处理:使用lambda提交作业 7 年前 |
![]() |
alterpub · Ansible:覆盖变量 7 年前 |