ホーム > .NET, ASP.NET 備忘録 > Routing:認証の設定

Routing:認証の設定

Routingを用いたプロジェクトでは、ファイルの存在する場所とURLは基本的には一致しません。
こういうときForm認証の設定をどのように行えばよいかまとめてみます。

たとえば下記の記事で書いたようなサンプルを作成します。

ちょっと先取り Routing 4:その1 PageRouteHandler

このとき、Default2.aspxはサイト直下に存在していますが、Default2.aspxにアクセスするためのURLは

http://localhost:(port)/RoutingTest/test/

です。

Form認証の設定はURLに対して行いますので、このような場合、testフォルダをサイト直下に作成し、そのフォルダにweb.configを置いて以下のように記述する、という手段が使えます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</configuration>

ただ、この方法だと利用する必要がないフォルダを追加していくことになってしまいます。

実はこのような場合、web.config内でlocation要素を利用することで存在しないURLへの設定を行うことができます。
具体的には以下の記述をサイト直下のweb.configのconfiguration要素の最後に記述します。

<location path="test">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

これでtestフォルダを追加しなくても、

http://localhost:(port)/RoutingTest/test/

のようなURLに認証の設定を行ったことになります。

なおRoutingを利用していても、設定を変更しなければ、認証が必要なときはlogin.aspxファイルが呼び出されます。
Routingの利用にこだわりたい場合は、以下のようにauthentication要素でloginUrlを設定します。

<authentication mode="Forms">
    <forms loginUrl="login/" />
</authentication>

このように設定したうえで、

http://localhost:(port)/RoutingTest/login/

というURLに対して認証を行うページが表示されるようRoutingの設定をすれば正しく動かすことができます。

カテゴリー:.NET, ASP.NET 備忘録
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。