我會做什麼,如果我是你,是實現規範模式。這裏的規範模式的基礎:
public interface ISpecification<T>
{
bool IsSatisfiedBy(T entity);
}
一旦你這樣做,我會實現一個ISpecification<IPrincipal>
指定每個角色的邏輯。然後,您可以創建一個屬性,該屬性採用可以控制特定操作授權的規範。下面是一個例子,看看如何:
public class AuthorizeWith : AuthorizeAttribute
{
public AuthorizeWith(Type specificationType)
{
Specification = Activator.CreateInstance(specificationType)
as ISpecification<IPrincipal>;
}
public ISpecification<IPrincipal> Specification { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return base.AuthorizeCore(httpContext) &&
Specification.IsSatisfiedBy(httpContext.User);
}
}
希望有所幫助。
哦,這裏有更多的規格模式。 http://en.wikipedia.org/wiki/Specification_pattern – zowens 2009-10-14 16:31:11