C# 基于特定角色授权mvc4控制器
我有一个名为“Add”的控制器,我只想授权管理员角色,我将角色存储在C# 基于特定角色授权mvc4控制器,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我有一个名为“Add”的控制器,我只想授权管理员角色,我将角色存储在枚举角色中 public enum Role { Member = 0, Administrator = 100 } 没有指定角色,控制器是被授权的,但当我尝试这样应用角色时 [Authorize(Roles = Role.Administrator.ToString())] public class AddController : Controller { } 尝试构建解决方案时,它给了我一个错误 E
枚举角色中
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
您需要像这样给定值,它将采用常量或字符串值
[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)]
我已经试过了,但是当这个控制器调用时,它总是再次重定向到登录页面。这是当用户点击那个控制器并且他们没有所需角色时的默认行为。你确定你正在测试的用户具有正确的角色吗?我已经尝试过这个,但是当这个控制器调用时,总是再次重定向到登录页面。如果角色是admin角色??,其他人肯定会被重定向,因为他们不会被授权。是的。如果角色是admin,那么它也会重定向到登录页面