0

ASP.NET MVCルートは、ビジネスブランチへのきめ細かいロールベースのアクセス制御を可能にするようにどのように構成する必要がありますか?

すべてのビジネスエンティティは、それ自体で、またはその親エンティティを介して、ブランチに関連付けられています。任意の数のブランチのユーザーロールに基づいてアクションを承認するための洗練された方法はありますか?

1.ルートに{ブランチ}がありますか?

{branch}/{controller}/{action}/{id}

アクション:

[Authorize(Roles="Technician")]
public ActionResult BusinessWidgetAction(BusinessObject obj)
{
    // Authorize will test if User has Technician role in branch context
    // ...
}

2.事業体から支店を取得しますか?

{controller}/{action}/{id}

アクション:

public ActionResult BusinessWidgetAction(BusinessObject obj)
{
    if (!User.HasAccessTo("WidgetAction", obj.Branch))
        throw new HttpException(403, "No soup for you!"); // or redirect

    // ...
}

3.それとも、もっと良い方法はありますか?

4

1 に答える 1

0

結局、各事業所の別々のアプリケーションとデータベースで同じコードベースを使用することになりました。つまり、それぞれを個別に更新する必要がありますが、機能の分岐は可能です。

[BranchAuthorize(Roles = "Editor, Stock Keeper")]認証されたユーザーの役割をコントローラーアクションの必要な役割と照合し、割り当てられていない場合は必要な役割の詳細を示すメッセージを表示する独自の属性をロールしました。

統合されたブランチアクセス制御には、個別の承認サービスが必要ですが、中央の権利管理が可能になります。

于 2011-01-03T20:29:26.557 に答える