.NET Framework 4.0 を使用し、Windows Server 2003 IIS で展開された MVC 4 Web サイトがあり、iPhone (特に Chrome ブラウザー) でのフォーム認証に問題があります。
シナリオ
- I iPhone で Chrome アプリを開きます。
- 自分の Web サイトにアクセスし、[ログイン] をクリックします。フォーム認証を使用して、Web サイトに正常にログインできました。
- Web サイトを開いたまま 5 分間何もせずに放置します。
- iPhone に戻り、自分の Web サイトのリンクをクリックします。ログアウトしました。
- 以前と同じようにログインしようとします。ログイン プロセスが機能しません。エラーはありません。私のホームページに移動するだけです (これは、ログインが成功したときに行うべきことです)。
その他の情報
- 一般的に、iPhone の Safari はこの問題に悩まされていないようです... Chrome で問題が発生した後、Safari でも問題が発生するようです。
- 解決策は、すべてのキャッシュ/Cookie をクリアして、20 分ほど後に再試行することです。
- 私のタイムアウトは実際には 30 分に設定されているため、Chrome でこの問題がログアウトすることはありません。
私はこの投稿(iPhone UIWebViewを使用する場合のAsp.Net Forms Authentication)を調査し、試しました:-
(a) web.config の UseCookies 設定
(b) .browser 構成ファイル
(c) web.config の MachineKey
違いはないようで、Chrome のログインは 1 ~ 2 分しか続かないようです。
コード
フォーム認証 Cookie を作成するコードは次のとおりです。
FormsAuthentication.Initialize()
Dim fat As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, UserID, DateTime.Now, DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes), False, Roles, FormsAuthentication.FormsCookiePath)
Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(fat)))
この問題を解決する方法について何か提案はありますか?