我有一个名为"添加"的控制器,我只想授权管理员角色,我将角色存储在enum Role
,
public enum Role {
Member = 0,
Administrator = 100
}
如果没有指定角色,则控制器已获得授权,但当我尝试应用此类角色时,
[Authorize(Roles = Role.Administrator.ToString())]
public class AddController : Controller
{
}
并尝试构建解决方案,它给了我一个错误。
Error 1 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type C:\Users\Admin\Desktop\Direct-Edited\Deor.Direct\src\Direct.Web\Controllers\AddController.cs 11 23 Direct.Web
答案 0 :(得分:2)
属性的参数必须是常量。最简单的方法是使用硬编码值。
[Authorize(Roles = "Administrator")]
另一个选择是在静态类中定义角色。
public static class AppRoles
{
public const string AdminRole = "Administrator";
}
然后在您的控制器中
[Authorize(Roles = AppRoles.AdminRole)]
答案 1 :(得分:0)
你需要给出这样的值,它需要一个const或一个字符串值
[Authorize(Roles = "AdminRole")] //String value here
public class AddController : Controller
{
}
第二种方法是检查基本控制器中的请求,如果是添加控制器,则仅在角色需要角色时才允许。