在我的 asp.net mvc 4.0 应用程序中,我正在创建一个AuthorizeAttribute
名为“<em>AllowAttribute”的自定义。简而言之,我希望将此属性应用于某些方法(而不是整个控制器)并允许该属性接收按位时尚参数。
我像这样使用属性(注意:MemberType
是一个枚举)
[Allow(MyProperty = MemberType.User | MemberType.Administrator)]
属性本身的定义如下:
public class AllowAttribute : AuthorizeAttribute
{
public MemberType MyProperty { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (MemberContext.Current.Member == null || MemberContext.Current.Member.MemberType != this.MyProperty)
throw new HttpException(403, "Forbidden");
base.OnAuthorization(filterContext);
}
}
我基本上是在尝试将当前登录用户的 MemberType 与 MyProperty 中传递的一个(或多个)进行比较。如果当前登录的用户与传入的参数值不匹配,我会抛出一个禁止的异常。
我需要一些有关按位比较的指导,因为如果将多个 Enum 值传递给属性,则简单(不等于)不起作用。
谢谢