我创建了一个带有 Entity Framework 的 ASP.NET MVC 应用程序。由于客户的需求,我将不得不实现一个权限层次结构,其中不同的用户应该拥有/不应该拥有列出/查看/编辑不同类型对象的权限。在某些情况下,我们需要更深入地限制用户编辑对象的特定属性。
我创建了一些角色,但它们更通用,例如“SystemAdmin”角色、“CustomerAdmin”角色等
为了使这些权限变得更窄,是需要角色还是我可以使用其他东西,或者我应该在数据库中自己创建某种权限?
提前致谢。
最佳答案
如果我是你,我会做的是实现规范模式。以下是规范模式的基础知识:
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);
}
}
希望有帮助。
关于asp.net-mvc - ASP.NET 用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1566087/