asp.net-mvc - ASP.NET 用户权限

标签 asp.net-mvc

我创建了一个带有 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/

相关文章:

c# - 如何将数据传递给 _Layout.cshtml

javascript - 更改日期格式在数据库中输入了错误的日期

c# - @Html.DisplayFor — 添加额外的纯文本

mysql - ASP.NET 配置抛出 "Could not load file or assembly ' MySql.Web,版本 = 6.3.2.0,...“尝试添加新用户时

c# - 在 asp.net mvc razor 中使用 JQuery 范围 slider

c# - 如何对采用对象数组并在 ASP.Net MVC 中返回 JsonResult 的 Action 方法进行单元测试

asp.net-mvc - 如何抑制 header 变化 :* when using OutputCacheProfiles

asp.net-mvc - MVC4部分 View 在回发时未将值加载到 "container"模型中

asp.net-mvc - 如何在 ASP.NET Razor MVC4 View 中使用 LINQ?

jquery - 使用 ASP.NET MVC 和 jquery 实现 AJAX 的最佳方法是什么?