Asp.net mvc 路由业务分支:ASP.NET MVC中的粒度访问控制

Asp.net mvc 路由业务分支:ASP.NET MVC中的粒度访问控制,asp.net-mvc,asp.net-mvc-routing,roles,access-control,Asp.net Mvc,Asp.net Mvc Routing,Roles,Access Control,ASP.NET MVC路由应如何构造,以允许对业务分支进行细粒度的基于角色的访问控制 每个业务实体都与分支机构相关,无论是通过其自身还是通过其母公司。是否有一种优雅的方法可以根据用户角色为任意数量的分支授权操作 1.{branch}在路线中? 行动: 2.从业务实体检索分支机构? 行动: 3.还是有更好的方法?我最终在每个业务分支的单独应用程序和数据库上使用了相同的代码库。这意味着我必须单独更新每个功能,但允许功能分叉 我使用了自己的[BranchAuthorizeRoles=Editor,St

ASP.NET MVC路由应如何构造,以允许对业务分支进行细粒度的基于角色的访问控制

每个业务实体都与分支机构相关,无论是通过其自身还是通过其母公司。是否有一种优雅的方法可以根据用户角色为任意数量的分支授权操作

1.{branch}在路线中? 行动:

2.从业务实体检索分支机构? 行动:


3.还是有更好的方法?我最终在每个业务分支的单独应用程序和数据库上使用了相同的代码库。这意味着我必须单独更新每个功能,但允许功能分叉

我使用了自己的[BranchAuthorizeRoles=Editor,Stock Keeper]属性,该属性检查已验证用户的角色与控制器操作所需的角色,如果未分配任何角色,则显示一条详细说明所需角色的消息


统一分支访问控制需要单独的授权服务,但允许中央权限管理。

看看您的另一个问题-我的感觉是,您需要重新考虑访问/安全的工作方式。我理解对粒度控制的需要,而且似乎您需要很多限制-这对我来说是重新思考的迹象。@Ahmad:我应该看看ACL吗?对ACL不太确定。。不过,使用自定义成员资格提供程序将有所帮助。您希望基于用户角色授权操作,这对于默认成员资格提供程序来说足够简单,但是附加限制适用于任意数量的分支机构-因此,这实际上是一个角色->分支机构,例如,对于某些分支机构关系,用户处于管理角色,或者用户->分支机构无法考虑示例关系。我可能错过了什么!!我有一个分公司的表格,如开普敦,角色,如管理员,技术人员和用户约翰,吉尔,彼得。使用UserRoles表,跟踪用户、分支机构和角色,例如Peter、开普敦、技术人员。我喜欢Runeborg在这里的回答:我已经在使用自定义的成员资格和角色提供程序。
{branch}/{controller}/{action}/{id}
[Authorize(Roles="Technician")]
public ActionResult BusinessWidgetAction(BusinessObject obj)
{
    // Authorize will test if User has Technician role in branch context
    // ...
}
{controller}/{action}/{id}
public ActionResult BusinessWidgetAction(BusinessObject obj)
{
    if (!User.HasAccessTo("WidgetAction", obj.Branch))
        throw new HttpException(403, "No soup for you!"); // or redirect

    // ...
}