根据特定角色授权mvc4控制器

时间:2014-10-29 06:48:21

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

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

2 个答案:

答案 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
{
}

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