1

私は ASP .NET を初めて使用するので、本当に助けが必要です。私はインターネットをたくさん検索しましたが、私の問題について何も見つかりませんでした...それは、ユーザーがログインせずにページにアクセスできないサイトに関するものです (ページはありません)。フォーム認証を使用します。

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" timeout="2880" />
</authentication>
<authorization>
  <deny users="?" />
</authorization> 

しばらくして、ユーザーがログインせずにサイトのページにアクセスできるようにいくつかの変更を加えましたが、以前のコンセプトも維持したいと考えていました。そのため、ページにアクセスできるかどうかを示すキーを web.config に作成しました。この「autologin」キーが 1 に設定されている場合、「Login.aspx」にリダイレクトした後、システムはハードコーディングされたユーザー情報で自動ログインを実行するため、ユーザーはログインせずにサイトを閲覧できるように感じますが、ポイントは同じ: ページにアクセスする前に、サーバーは 302 応答 (リダイレクト) を Login.aspx に送信します。これは私の問題です!私は思う...一時的なリダイレクトはたどることができません。

例: 「GoogleBot」としてページを表示しようとすると、
「無効な URL またはサーバーが応答しません。HTTP リターン コード: 302」というエラーが表示されます。

SEO Toolkit を使用すると、同様のエラーが発生します:
「http://localhost:5769/GlobalShop/」へのリンクにより、「http://localhost:5769/GlobalShop/Login.aspx?ReturnUrl=%2fGlobalShop%2f " その結果、別のリダイレクトが発生しました。検索エンジンは、ページのランキングやその他の関連データを 1 回のリダイレクト ホップでしか渡すことができません。不要なリダイレクトを使用すると、ページのランキングに悪影響を及ぼす可能性があります。

Facebook の「オブジェクト デバッガー」を使用すると、同じエラーが発生します。機能的ないいねボタンがありますが、Facebook はメタデータを抽出して、ユーザーの Facebook ページに表示される投稿をフォーマットできません。エラー メッセージ:
「リダイレクトをたどることができませんでした: URL は HTTP リダイレクトを要求しましたが、たどることができませんでした。
リダイレクト パス:
オリジナル: http://mysite.net/Default.aspx
302: http://mysite.net/Login. aspx?ReturnUrl=%2fDefault.aspx
301: http://mysite.net/Default.aspx
最終 URL は太字になっています (これは、メタデータを抽出しようとした URL です)。

あるページから別のページにリダイレクトするには、通常、「Response.RedirectPermanent()」を使用して、この種の問題を回避します。どうにかしてフォーム認証の応答タイプを永続的なリダイレクト (301) に変更できないだろうか? できない場合はどうすればいいですか?私は何を間違っていますか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

FormsAuthentication を有効にしている場合は、自動ログインであっても、リダイレクト サイクルを実行する必要があります。

残念ながら、これは、そのリダイレクト サイクルを削除する唯一の方法は、FormsAuthentication を完全に削除することであることを意味します。

于 2012-08-08T09:15:18.680 に答える