0

私は MVC4 c# を使用しており、自家製のセキュリティ トークン サービス (STS) を組み込んでいます。ユーザーが実際の Web アドレスを呼び出すと、STS ログインに受動的にリダイレクトされます。認証に成功すると、目的の場所にリダイレクトされます。これは、sts へのリダイレクトの URL ですべて urlencoded されています。

ログアウト時に、次を呼び出します。

 this.Session.Abandon();
 this.Response.Cache.SetCacheability(HttpCacheability.NoCache);
 this.Response.ClearContent();

 // expires the claims
 FederatedAuthentication.SessionAuthenticationModule.SignOut();
 FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Delete();
 WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule
 Response.Redirect(WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(authModule.Issuer, authModule.Realm, null));

私たちのアプリのデスクトップ バージョンでは、すべてがうまく機能しているようです。ユーザーは STS ログイン ページに戻り、URL には wlogin1 (および他の多くのもの) が表示され、ユーザーは問題なく再度ログインできます。URL は、最初に STS にリダイレクトされたときとまったく同じです。完璧です、これが私が欲しいものです。

ちなみに、まったく同じドメイン/コントローラー/メソッドを使用するモバイルでは、jQueryMobile と異なる部分ビューのみを使用すると、ログアウトが機能しているように見え、ユーザーは STS ログインに戻ります。ただし、今回の URL には、ログアウトに使用されたモバイル actionLink から実際に呼び出されたドメイン/コントローラー/メソッドのみが表示されます。ユーザーが再度ログインしようとすると、このリンクは sts ログインに適していないため、ログインは常に失敗します。

これを修正する方法についての考え、または何が問題なのですか? 説明が必要な場合はお知らせください。ありがとう!

4

1 に答える 1

0

これで治りました!!

モバイル サイトのヘッダーを見ると、次のように表示されていました。これが、デスクトップ ヘッダーとモバイル ヘッダーの唯一の違いです (もちろん、ユーザー エージェントを除いて)。これを問題として突っ込み始めました。

私のモバイル固有のスクリプトの 1 つで、mobileinit 内に以下を追加しました。ビンゴ!うわー、そのような混乱の問題に対するなんと簡単な解決策でしょう。

$(document).bind("mobileinit", function (event) {            
  $.mobile.ajaxEnabled = false;});

ライブラリも正しくロードしていることを確認してください。jquery ライブラリを次の順序でロードしました。

  1. jquery
  2. モバイル jquery 初期化ファイル (上記のもの)
  3. jquerymobile
  4. jqueryの検証
  5. ほかのすべて

次の jQuery ライブラリを使用しています: jquery 1.9.1 jquery-ui 1.10.3 jquery.mobile 1.3.1 jquery.validate

これが他の人に役立つことを願っています!

于 2013-12-13T21:27:02.733 に答える