3

ログインしているユーザーがエンティティの表示/編集を許可されているかどうかを確認する必要がある多層 (多層ではない) ASP.NET アプリケーションがあります。いくつかの実装を考えることができます:

a) ユーザーが ActionFilter を使用して UI でエンティティを表示/編集する権限を持っているかどうかを確認します

b)ユーザーがAOPを使用してServiceLayerのエンティティを表示/編集する権限があるかどうかを確認します

c) 両方を行いますか?

a)、b)、または c) に同意しない場合、ソフトウェア アプリケーションのレイヤーのどこでユーザー認証を確認する必要があると思いますか?

4

3 に答える 3

1

私の個人的な経験では、より広いレベルで、両方を行う必要があることがわかりました (c)。アクションとサービス層で権限を検証する必要がありました。この特定のシナリオでは、アクション フィルターでサービス レイヤーを呼び出すか、最初にアクセス許可を確認して、表示/編集機能を完全にレンダリングしないことが理にかなっている場合があります。

基本的に、きめ細かいアクセス許可について話しているのです。このためにデータストアを何に使用しているのかわかりません。どのアプローチを採用する場合でも、効率/パフォーマンスを計画するようにしてください。

于 2013-02-12T16:41:59.003 に答える
0

ユーザーがエンティティが広すぎることを確認できるかどうかを検証しますか?ユーザーがエンティティの特定の側面のみを操作でき、他の側面は操作できない場合はどうなりますか?

私はセキュリティを「ユーザーが要求されたプロセス/アクションを実行できる」と見なす傾向があります。そのプロセスは、1つ以上のエンティティと相互作用する可能性があります。

したがって、私はユーザーを認証したり、アクションフィルターを介してコンテキスト固有のビューモデルを検証したりする傾向があります。実行がコントローラーアクションに到達した場合、ハッピーパスを想定できます。他のすべての検証/認証はすでに行われており、問題が発生した場合はアクションをバイパスします。

于 2013-02-12T16:40:30.987 に答える
0

[Authorize] を Web レイヤーの上で承認したいコントローラーの上に置くことができます。

[Authorize]
    public class areaController : Controller
    {



        public ActionResult add()
        {

            return View();
        }

この例では、ログオンできない間、領域を追加できません

于 2014-10-11T05:49:32.320 に答える