書き直したURL(例:Scott Guthrieのブログから)とフォーム認証/承認を使用して簡単なサンドボックステストを行っています。書き直したURLでのフォーム認証/承認の使用
私は非常に簡単な設定をしました。
~/View/(\d{1,6}) => ~/Public/View.aspx?ContentID=$1
と
~/Buy/(\d{1,6}) => ~/Private/Purchase.aspx?ContentID=$1
私は、URL書き換えが別々に以下の
- http://localhost/urltest/Public/View.aspx?contentID=123456
- http://localhost/urltest/View/123456
- http://localhost/urltest/Private/Purchase.aspx?contentID=123456 のそれぞれに参照して取り組んでいるを確認しました
- http://localhost/urltest/Buy/123456
次の私は、web.configファイル、それらの2つのディレクトリのための私のフォーム認証/承認を行って、有効。セットアップ
<location path="Private">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="Public">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
私は2元のURL(の.aspxの)を参照したときにこれは完璧に動作 に従いますが、私はURL書き換えのバージョンを参照するときは全く発生しませんよう。
私は別々にBuy
ため<location>
セクションを追加しようとしましたが、これはまだでキックする認可/認証モジュールを起こすことができない。
それはASPXリソースとしてこれらのURLを処理されていないので、おそらくこれは..です。私は
<LookFor>~/Buy/(\d{1,6})\.aspx</LookFor>
すなわち最後にASPXを持つように書き換えられたバージョンを強制するために書き換えルールの外観を作ることによって、それを回避することができますが、これは単に醜いようです。 拡張子に関係なく、任意のURLタイプに対して認証ハンドラを起動させる方法はありますか(または存在しないか)
スコット・ガスリーは、あなたが使用している1、4つの異なるアプローチを概説しますか? http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx – MyItchyChin