2

ログイン後、Request.IsAuthenticated の値は true のままではありません。すべての主要なデスクトップブラウザーで完全に動作しますが、iPad のモバイル サファリでは動作しません。

iPadでjQueryMobileを使用するときに保存されないiPhone UIWebViewおよびASP.NET認証Cookieを使用する場合のAsp.Netフォーム認証を投稿した両方のソリューションを試しましたが、どれも機能していないようです。なぜそれが機能しないのですか?

事前に助けてくれてありがとう。

4

3 に答える 3

4

古いスレッドを掘り下げて申し訳ありませんが、これはMVCとiPadのログインの問題を検索する際の上位の結果の1つです。

私が見つけた解決策は、Web設定で認証タグのcookieless="UseCookies"属性を強制することです。

<authentication mode="Forms">
  <forms loginUrl="~/LogOn" timeout="2880" cookieless="UseCookies"/>
</authentication>

何らかの理由で、Mobile Safariブラウザーは、Cookieなしのセッションを要求するヘッダーを送信します。属性が設定されていない場合、デフォルトでセッショントークンを使用してURLを書き換えます。何らかの理由で、これが常に機能するとは限らず、ログインが壊れてしまいます。

于 2013-03-18T20:19:56.537 に答える
1

OK、応答キャッシュで少し力ずくでこれを解決しました...

public void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
}

これにより、応答ヘッダーが Cache-Control:no-cache強制的に設定され、iOS6 の Safari で POST のキャッシュが強制的に停止されました。

https://stackoverflow.com/a/7087989/10573への帽子のヒント

于 2012-11-12T09:27:52.463 に答える
1

私がこれに遅れて貢献したとしても、誰も気にしないことを願っています. 私は同じ問題を抱えていました: ASP.NET MVC 4 アプリへのログインが、iPhone Safari ブラウザーから機能していませんでした。結局、開発マシンで関連するポートを開き、IISExpress で実行されているアプリケーション インスタンスに iPhone がアクセスできるようにして、デバッグできるようにしました。

アプリケーション コードにブレークポイントを設定し、携帯電話から関連する要求を行いました。次に、そのヘッダー コンテンツと、(デスクトップ ブラウザーから) 機能していることがわかっている要求のヘッダー コンテンツを比較しました。iPhone リクエストに関連付けられた Cookie ヘッダー情報がないことがわかりました。

というわけで、iPhone の Safari 設定ページにたどり着きました。何らかの理由で、私のプライバシー設定は「Cookie を受け入れる」が「しない」に設定されていました。「訪問済み」に変更すると、問題が解決しました。Google おじさんの話によると、iPhone の既定の設定は [訪問済み] です。「Never」ケースをサポートしたい場合は、Cookie を使用しないフォーム認証を実装する方法を (ここで説明した行に沿って) 調べる必要があると思います。

それが誰かを助けることを願っています:)。

于 2013-05-23T17:12:07.917 に答える