-1

正常に動作している既存のASP.NETMVCアプリケーションがあります。選択したグループの人々に一連の管理機能を提供します。私は今、まったく同じアプリケーションの非常に限られた部分へのはるかに大きなグループアクセスを許可するという任務を負っています。

ASP.NET MVCエリアはこれを行う方法ですか?私が尋ねる理由は、すべてのユーザーに同じWebページ(たとえばmysite.com)にアクセスしてもらい、ルックアンドフィールを同じままにしたい(同じマスターページファイルまたは_Layout.cshtmlを利用する)ためです。 )。

現在の設定では、すべてのユーザーがシステムが提示するすべてのデータに平等に(完全に)アクセスできます。

だからボブが行くとき

/People/Index 

彼はすべてを見ます、そしてサリーが見るとき、彼女は同じことを見ます。

今、私はもっと多くの個人がこれと同じものにアクセスできるようにする必要があります。だからシンディが行くとき

/People/Index

彼女が目にするのは、彼女に直接報告する人々、そしてデイブについても同じです。そして、すべてに完全にアクセスできる「管理者」グループに特に属していない他のすべての人々です。

ここでのURIは、私にとって重要ではありません。しかし、私がやりたいのは、異なるコントローラーのセット(データのサブセットのみを表示する追加のビジネスロジックを備えている)を使用しながら、同じレイアウトとビューをリサイクルできるようにすることです。

ASP.NET MVCエリアはこれを行う正しい方法ですか?そうでない場合は、正しい方向へのポインタ?

4

2 に答える 2

1

唯一の要件が、データをユーザーに直接関連する人/アイテムに限定することである場合、私はあなたのデータ層でこれを行います。ユーザーのリストをロードするときは、Cindyがアクセスできるユーザーのみを返します。おそらく、ユーザーが管理者ユーザーであるかどうかを示すユーザーテーブルフラグがあります。

public IEnumerable<User> GetUsers(User requestingUser)
{
    if(requestingUser.IsAdmin) // return your full list of users

    return // list of users filtered by reporting to requestingUser
}

データ層でこのすべてのロジックを実行すると、ユーザーはすべて同じサイトを使用し、同じページフローを通過しますが、ページに表示される内容は制限されます。もちろん、ビューの特定の部分をレンダリングするときに、ユーザーの管理フラグをテストすることもできます。

于 2012-11-20T20:01:29.930 に答える
0

ASP MVCで順調に進んでいると思います。アプリケーションにロールを実装し、ロールに基づいて、ユーザーが同じ機能を実行する場合に特定の情報をユーザーに提示します。ブログやショッピングなど、まったく異なる機能を持つ同じアプリで異なる側面を開発していないというあなたの質問を正しく理解しています。役割とメンバーシップをご覧ください。

http://www.asp.net/web-forms/videos/how-do-i/how-do-i-secure-my-site-using-membership-and-roles

于 2012-11-20T20:04:12.030 に答える