授权基于特定角色的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
{
}
第二个选择是检查请求的基本控制器,如果是添加控制器,然后只允许角色是所需的角色。
答
属性的参数必须是常量。最简单的方法是使用硬编码值。
[Authorize(Roles = "Administrator")]
另一种选择是在静态类中定义你的角色。
public static class AppRoles
{
public const string AdminRole = "Administrator";
}
然后在你的控制器
[Authorize(Roles = AppRoles.AdminRole)]
我已经尝试过这一点,但是这始终重定向到重新登录页面时,该控制器称为 – shyama 2014-10-29 06:56:52
即使角色是管理角色??,其他人将被重定向为当然,因为他们不会被授权。 – Rex 2014-10-29 06:58:07
是的。如果角色是管理员然后也重定向到登录 – shyama 2014-10-29 07:21:31