2012-03-26 12 views
1

ログインしていないユーザーがログインしていないユーザーに対して特に許可されていないコントローラーにアクセスしようとすると、ユーザーgetはコントローラがログオンを処理します。どのように私は最良の方法でそれを達成することができますか?どういうわけか、Global.asax.csでそれをするのはいいと思っていましたか?MVC3はログインしていないユーザーがコントローラにアクセスすることを許可しません。

答えて

4

[Authorize]属性を使用してください。私はあなたが使用しているものと思われるフォーム認証でうまく動作します。

+0

私はこの解決策を検討しました。 (ログインしていないユーザーを少し違ったやり方で処理する独自の属性を作ったのですが)最も簡単です。 –

1

ASP.NET MVC3アプリケーションをセキュリティで保護する場合、ユーザーが特定のURLにアクセスするためにはログインする必要があります。これは、コントローラーまたはアクションでAuthorizeフィルター[Authorize()]を使用して行います。

http://build.mt.gov/2011/10/27/aspnet-mvc3-and-the-authorize-attribute.aspx

カスタマイズ承認属性:

http://www.diaryofaninja.com/blog/2011/07/24/writing-your-own-custom-aspnet-mvc-authorize-attributes

0

はベースコントローラから、すべてのコントローラを継承します。ベースコントローラは、クラス宣言の上にアノテーションを持つ必要があります。 [Authorize]などの.NETアノテーションを使用することもできますし、独自の注釈を実装することもできます。これは簡単です。

など。

[Secure()] 
public class BaseController : Controller 
{ 
    // Action methods 
} 

次に、あなたのベースコントローラから派生しますコントローラを作成します。

[Secure(false)] 
public class NonSecureController: BaseController 
{ 
    // Action methods 
} 

あなたは、ユーザーがログインする必要があるかどうかを示すフラグを渡すことができたに簡単な注釈を実装する必要がありますかどうか

カスタム属性(アノテーション)を開発するときに、そのスコープをクラスまたはメソッドのいずれかに指定できます。つまり、アクセス許可ロジックをより詳細に制御できます。

関連する問題