2011-07-27 10 views
3

ユーザが管理者ではない場合、 "〜/ Error/Unauthorized"ページを返し、特定のコントローラにアクセスしようとしています。文字列メソッドを確保する - コントローラ

  if (!Models.Authorization.AdminPageCheck(this.User)) 
      return new RedirectResult("~/Error/Unauthorized"); 

私はそれがビューを返さないと、文字列のメソッドのためのActionResultメソッドのためにそれを行うではなく、することができています:ここで私はエラーページを返す方法です。どのようにして文字列メソッドを保護できますか?

答えて

1

ActionResultを返すようにこれらのメソッドを変更する必要があります。あなたは時々単なる文字列とは異なる結果を持っている場合
その後、return Content(someText, "content/type")

0

、そして好ましくはあるだろう「修正」することができますstringを返しません。 ActionResultを返し、それストリング、必要に応じてコンテンツ・タイプ/符号化を指定

return Content(yourString); 

とき。

5

それはで

[Authorize] 

とASP.NET MVCの内蔵機能を使用して、ちょうどあなたのコントローラに注釈を付ける(いずれかのクラスレベルで、すべてのアクションのために、またはアクションメソッドレベルで)するのが好ましいです誰かがメソッドを呼び出そうとしたときにログインしていない場合、web.configで設定されたメソッドを使用して強制的に認証されます。

それとも、あなたは

[Authorize(Roles = "AdminRole")] 

を使用している場合彼らはまだいないのであれば、その後、彼らはそれらが関連する役割を有することに基づいてアクセスを許可または拒否することがあります、認証するように強制されます。

非常に一般的な要件であり、ありがたいことに、ASP.NET MVCチームは非常に包括的にそれを処理しています!

0

前述のSLakと同様に、文字列メソッドの戻り値の型をActionResultに変更し、ContentResult classを使用して文字列を返すことができます。

関連する問題