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

问题描述:

我有一个名为控制器“添加”,我只想授权管理角色,我存储在角色enum Role授权基于特定角色的mvc4控制器

public enum Role { 
    Member = 0, 
    Administrator = 100 
} 

不指定角色,控制器但当我尝试应用这样的角色时,

​​

并试图构建解决方案,它给了我一个错误。

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 

你需要给值这样的,它需要一个常量或字符串值

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

第二个选择是检查请求的基本控制器,如果是添加控制器,然后只允许角色是所需的角色。

+0

我已经尝试过这一点,但是这始终重定向到重新登录页面时,该控制器称为 – shyama 2014-10-29 06:56:52

+0

即使角色是管理角色??,其他人将被重定向为当然,因为他们不会被授权。 – Rex 2014-10-29 06:58:07

+0

是的。如果角色是管理员然后也重定向到登录 – shyama 2014-10-29 07:21:31

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

[Authorize(Roles = "Administrator")] 

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

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

然后在你的控制器

[Authorize(Roles = AppRoles.AdminRole)] 
+0

我已经试过这个,但是当这个控制器调用 – shyama 2014-10-29 06:56:21

+0

时,这总是重定向到登录页面这是用户点击该控制器时的默认行为,他们没有所需的角色。你确定你正在测试的用户是否具有正确的角色? – Shane 2014-10-29 07:13:06