2012-09-21 4 views
5

私が解決しようとしている問題は、私にとっては非常に簡単だと思われます。メニュー項目は、単にActionResultメソッドへのリンクです。私は、カスタムのAuthorizeAttributeをアクションに使用して、ユーザーの権限の役割を強化しています。それは適切な役割を持たないユーザーがアクションを実行するのを防ぎます。しかし、私がしたいことは、実行する権限がない場合、そのアクションに移動するためのメニューオプションを表示していないことです。だから、コントローラアクションがそれを呼び出す前に承認されているかどうかを確認

、最も単純なレベルで、私はこのような何かを行うことができるようにしたい:

var isAuthorized = IsAuthorized("ControllerName", "ActionName", currentUser); 

のisAuthorized方法は、その後のアクション上の任意のAuthorizeAttributesを見て、特定のユーザーがであるかどうかを評価しますそれを実行することができます。

このようなアプローチはありますか?この評価を行っている時点でコントローラのインスタンスがないとします。

+0

"カスタム' AuthorizeAttribute' - 自分で書いたものを意味しますか、それともその名前で組み込まれたものの1つですか? –

+0

はい、私は特定の認証要件を実装するために自分自身を書いています。 "public class MyAuthorizeAttribute:AuthorizeAttribute"のように、 – Dan

答えて

5

これに対するアプローチを検索する際の2番目のパスは、実際に私が探していたものを正確にもたらしました。この答えを他の人に導く場合は、この質問をここに残しておきます。

Create an authorized action link extension for ASP.NET MVC 3

実装は、ちょうど約まさに私が探していた構文を使用し、実際に動作します。

+0

あなたが回答者であっても、回答としてマークする必要があります。 – labilbe

関連する問題