2010-12-06 18 views
1

のために私はASP.NET MVCでフォーム認証を使用しています。アプリケーションレベルのweb.configでは、認証が必要なパスを次のように設定できます。ASP.NET MVCの許可は動的パス

<location path="subdir1"> 
<system.web> 
    <authorization> 
     <allow users ="?" /> 
    </authorization> 
</system.web> 
</location> 

subdir1は、[ビュー]フォルダ内のフォルダ名です。これは、Webページのルーティングでsiteurl.com/subdir1として機能します。私のsubdir1は別の動的に作成されたルートの下にある場合

ただし、この設定は動作しません。例えば; siteurl.com/dynamic/subdir1は認証を要求しません。 ダイナミックは、実行時に作成され、web.configファイルは、アプリケーションの起動時にそれについて知っているわけではありませんが、私はちょうどsubdir1ルートへのアクセスがあるたびに、それは認証のためにお願いしたいと思います、それを気にしてはいけません。

私はこのような場合のために場所のパス属性を設定することができます方法はありますか?またはこの問題を解決する他の方法がありますか?

ご協力いただければ幸いです。 cas sakal

答えて

4

許可を制御するには、適切なアクションまたはコントローラのAuthorize属性を使用します。いくつかのより多くの情報がASP.NET MVC Authorization

で発見することができます

[Authorize] 
public ActionResult MyAction() 
{ 
    //stuff 
} 

1

コントローラーにマップされたルートのweb.configファイルへのアクセスを設定するのではなく、コントローラー/アクションでAuthorizeAttributeを使用する必要があります。すべてのアクションにログインしているユーザーが必要でない場合は、承認が必要なアクション(メソッド)に属性を適用する必要があります。

[Authorize] 
public class ProtectedController : Controller 
{ 
    // all actions in this controller require the user to be logged in 
} 

public class MixedController : Controller 
{ 
    [Authorize] 
    public ActionResult ProtectedAction() 
    { 
     // this action requires the user to be logged in 
    } 

    public ActionResult PublicAction() 
    { 
     // this action is available to anonymous users 
    } 
}