私は現在 Admin MVC 3 サイトを作成しており、各ユーザーはサイトの特定の部分にしかアクセスできません。
私のサイトの領域はユーザーの役割と同じなので、役割のパラメーターとして領域の名前を使用して、各領域に AuthorizeAttribute を配置したいと考えています。
これまでのところ、各領域のチェックをハードコーディングしているときにこれが機能するようになりましたが、すべての領域をループして Authorize フィルターを適用したいと思います。(私はこれをカスタム FilterProvider として使用しています - http://www.dotnetcurry.com/ShowArticle.aspx?ID=578 )
これまでの私のコード(「Gcm」は私の分野の1つであり、役割でもあります):
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
// for all controllers, run AdminAuthorizeAttribute to make sure they're at least logged in
filters.Add(ObjectFactory.GetInstance<AdminAuthorizeAttribute>());
AdminAuthorizeAttribute gcmAuthroizeAttribute = ObjectFactory.GetInstance<AdminAuthorizeAttribute>();
gcmAuthroizeAttribute.Roles = "Gcm";
var provider = new FilterProvider();
provider.Add(
x =>
x.RouteData.DataTokens["area"] != null && x.RouteData.DataTokens["area"].ToString() == "Gcm"
? gcmAuthroizeAttribute
: null);
FilterProviders.Providers.Add(provider);
}
アプリケーションのすべての領域を取得する方法を知っている人はいますか?
または、誰かがエリアごとに承認する方法についてより良いアイデアを持っている場合は、それをいただければ幸いです。
助けてくれてありがとう