基于特定角色授权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
属性的参数必须是常量。最简单的方法是使用硬编码的值。
[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
{
}
第二种选择是在基本控制器中检查请求,如果是添加控制器,则仅在角色是所需角色时才允许。