我会做什么,如果我是你,是实现规范模式。这里的规范模式的基础:
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