2009-06-29 14 views
2

私はasp.netとmvcが本当に新しいので、少し失われています。asp.net MVCとOpenIDを使用してフォルダ全体を(認証付きで)簡単に保護する方法

私はアプリケーションでこのTutorialを使用してOpenIDでログインすることができます。

しかし、私はちょうど設定セッション[「管理者は」] = trueの場合はわからないんだけど、これまでの私のコードは次のようなもので、従うべき正しい道である:

switch (openid.Response.Status) 
{ 
    case AuthenticationStatus.Authenticated: 
    if (openid.Response.ClaimedIdentifier.ToString() == Settings.Default.AdminClaimedIdentifier) 
     Session["Admin"] = true;         
    FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false); 
    break; 
    ... 
} 

私がしようとしているアプリケーション今は1人の管理者しか必要とせず、この管理者のOpenIDを設定に入れるのはとても簡単だとわかりました。

基本的には、設定にAdminのOpenIDが1つあり、その認証に基づいてフォルダ全体が保護されているため、その中のすべてのアクションとそのサブフォルダにはAdmin権限が必要です。〜/ Admin/whatever/edit/1は認証が必要です。

この種の認証を行うには、最もシンプルでクリーンな方法がありますか?

答えて

1

OpenIDは、「フォルダ」またはAdmin Controllerへのアクセスを制限する権限が許可(あなたは何ができますか?)の認証(あなたは誰ですか?)を提供します。

また、あなたのニーズに基づいて今後もあなたのために働くことができるシンプルなソリューションは、RoleProviderを使用することです。これは、グリエッグが示唆するようにAuthorize属性を使用できるようにします。

0

OpenIdについてはわかりませんが、通常はフォルダ全体をロックするためにコントローラクラスの上部に、またはアクションをロックするためにActionResultに次のいずれかを配置します。

[Authorize(Roles="admin")] 

これが役に立ちます。

+0

許可メカニズムと組み合わせない限り、これは機能しません。 [Authorize]は動作します。つまり、認証されたユーザーを許可します。[Authorize(Roles = "admin")]は上記のコードでは動作しません。 – veggerby