C# 使用常量表达式授权属性

C# 使用常量表达式授权属性,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试为我的控制器设置授权,可以执行以下操作: [Authorize(Roles = "Approver")] [Authorize(Roles = Settings.Instance.RoleEmployee)] 角色的名称如何保存在数据库中,因此我想尝试执行以下操作: [Authorize(Roles = "Approver")] [Authorize(Roles = Settings.Instance.RoleEmployee)] 但我得到了以下错误: 属性参数必须是常量表达式

我正在尝试为我的控制器设置授权,可以执行以下操作:

[Authorize(Roles = "Approver")]
[Authorize(Roles = Settings.Instance.RoleEmployee)]
角色的名称如何保存在数据库中,因此我想尝试执行以下操作:

[Authorize(Roles = "Approver")]
[Authorize(Roles = Settings.Instance.RoleEmployee)]
但我得到了以下错误:

属性参数必须是常量表达式,typeof表达式 或属性参数类型的数组创建表达式

有没有办法解决这个问题?

您将获得上述任何属性的值

   [UniqueAttribute(Identifier = "Id")]

如果“雇员”是已知角色,则在应用程序中定义此字符串常量,并确保存储在数据库中的角色可以在需要时映射到此值。

这两个链接都意味着这非常困难或不可能。通过创建自己的授权属性(例如[AuthorizeApprover])并使用该属性,这样做相对容易(总共5行)。不过,可扩展性不是很强。