基于特定角色授权mvc4控制器

本文关键字:mvc4 控制器 授权 定角色 于特 | 更新日期: 2023-09-27 18:28:17

我有一个名为"Add"的控制器,我只想授权管理员角色,并且我将角色存储在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

基于特定角色授权mvc4控制器

属性的参数必须是常量。最简单的方法是使用硬编码的值。

[Authorize(Roles = "Administrator")]

另一种选择是在静态类中定义角色。

public static class AppRoles
{
   public const string AdminRole = "Administrator";
}

然后在你的控制器

[Authorize(Roles = AppRoles.AdminRole)]

您需要给出这样的值,它将采用常量或字符串值

[Authorize(Roles = "AdminRole")] //String value here
public class AddController : Controller
{
}

第二种选择是在基本控制器中检查请求,如果是添加控制器,则仅在角色是所需角色时才允许。