なぜ私のスタイルシートは私をログインにリダイレクトしているのですか?
-
30-09-2019 - |
質問
これはIISと関係があると確信していますが、私はそれを理解することはできません。
フォーム認証を使用したWebサイトがあります。私のウェブサイトがファイルリソース(javaScriptファイル、CSSなど)にアクセスしようとすると、web.configに設定されたフォームログインページにリダイレクトされます。アドレスをアドレスバーに入力するだけでもリダイレクトされます。
Forms Authのweb.configエントリはかなり基本的です:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
また、サイトの他の部分からユーザーを拒否する2つのロケーションノードもあります。
<location path="n2">
<system.web>
<authorization>
<allow roles="Editors" />
</authorization>
</system.web>
</location>
<location path="web.config">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
Windows Server 2008 R2に標準のIIS7インストールを使用しています。
編集したがって、ランダムな認証Cookieを追加した場合(FormsAuthentication.SetAuthCookie()
)、リソースが利用可能になり、どういうわけか台無しにされている私の認証モデルでなければならないことを知っています。別のサーバーで動作します(コピーしました)。問題を追跡する方法はありますか?
解決
私は同じエラーがありました、私の場合、トリックはIISのIUSRの代わりにアプリプールIDを使用するように匿名認証を設定することでした
- IISを開きます
- サイトを展開します
- YourWebsite]を選択します
- 認証をダブルクリックします(IIS「エリア」またはセキュリティ「カテゴリ」の下にあります)
- 匿名認証を選択します
- アクション]ペインの[編集]をクリックします
- アプリケーションプールID]ラジオボタンをクリックします
他のヒント
私が使う allow *
私のために Content
フォルダ。これにより、静的コンテンツの許可が発生しないようになります。
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
リック
IISでは、私の匿名認証が正しく存在し、ユーザーはIUSRに設定されました。したがって、Windows Explorerに移動し、Webアプリディレクトリに移動し、プロパティを右クリック、セキュリティタブ、編集ボタン、IUSRの読み取り、リスト、および読み取りおよび実行許可(デフォルトセット)を指定する必要がありました。変更がすべての子供によって継承されることを確認し、適用し、おそらく待ってください。
ASP.NETフォームの動作を行ってから時間が経ちましたが、最初の質問は、ユーザーが「編集者」の役割のメンバーであることを確認してください。 Webサイト管理ツールを使用してこれをセットアップできますか?http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx
それはあなたがすべての人に拒否したからです。 IIS 7では、統合されたパイプラインのため、CSSまたは静的ページを閲覧しようとしてもリダイレクトされます。
必要に応じて静的コンテンツをフォルダー内に入れて、アクセスを許可します。
使用しないでください <location>
web.configのタグは、ASP.NET MVCアプリケーションでの承認を処理し、場所はもはや意味がありません。 web.configで必要なのはです authentication
鬼ごっこ。 MVCでは、適切なコントローラーやアクションを装飾することで、 [Authorize]
属性。
私はまったく同じでしたが、IISの内部からウェブサイトへの匿名アクセスを許可することを忘れていたからです!これは、保護されていない静的なリソースであっても、フォームサメンテーションが常に蹴られていたことを意味していました。