,所以我有一个问题。我有一个控制器和一些用户角色。我使用的字符串时,我有[Authorize(Roles="Admin")]
,但我想用一个枚举一样,因为如果我改变角色的名字,我会在一个位置修改。 我已经尝试过Roles=UserRoles.Admin.ToString()
,其中是的UserRole我的枚举,但我得到一个错误。我已经从这里阅读了Aricles,但似乎没有人帮助我解决我的问题。如字符串使用枚举点网
你能帮我解决一下吗?
,所以我有一个问题。我有一个控制器和一些用户角色。我使用的字符串时,我有[Authorize(Roles="Admin")]
,但我想用一个枚举一样,因为如果我改变角色的名字,我会在一个位置修改。 我已经尝试过Roles=UserRoles.Admin.ToString()
,其中是的UserRole我的枚举,但我得到一个错误。我已经从这里阅读了Aricles,但似乎没有人帮助我解决我的问题。如字符串使用枚举点网
你能帮我解决一下吗?
像这样创建一个自定义AuthorizeAttribute
:
using System.Collections.Generic;
using System.Web.Mvc;
namespace MyApp.Whatever
{
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public CustomAuthorizeAttribute(params UserRoles[] userRoles)
{
Roles = string.Join(",", userRoles);
}
}
}
然后你可以使用它,你通常会使用AuthorizeAttribute
,就像这样:
using System.Web.Mvc;
namespace MyApp.Whatever
{
[CustomAuthorize(UserRoles.Admin, UserRoles.Whatever)]
public class MyController : Controller
{
...
}
}
这可以完成,但你需要做一些工作。
IAuthorizationFilter
自定义属性(如AuthorizeAttribute
一样)AuthorizeAttribute
(整个过滤机制是可扩展的,允许这种事情。)
不过,我在过去已经完成了,处理这个问题是定义一系列传递给属性实例的常量字符串。因此保持名字中心。
创建自定义'AuthorizeAttribute'看到这样的事情:http://stackoverflow.com/questions/13264496/asp-net-mvc-4-custom-authorize-attribute-with-permission-codes-without-roles – Ric