2012-03-28 1 views
4

いいえ、私は困惑しています。ここにシナリオがあります: リモートサイトのiframeに埋め込まれた.net 4.0 mvc3アプリ(剃刀)があります。私はセキュリティのための標準的なメンバーシップ・プロバイダを持っており、ChromeやFirefoxを使用している限り、すべて正常に動作します。しかし、私がie9(互換モードの両方のモードと互換モードの両方)とサファリ(5.1.4を試しただけです)を使用すると、ログイン後に別のコントローラのMembership.GetUser()にアクセスしようとするとSystem.NullReferenceExceptionが発生します。.NETのMembership.GetUser()if9にはnull、iframeにはsafariが埋め込まれています

So私は自分のAccountControllerで正常にログインして、ここで私のTravelControllerにリダイレクト:

public ActionResult LogOn(LogOnModel model, string returnUrl) 
{ 
    try 
    { 
     if (ModelState.IsValid) 
     { 
      if (MembershipService.ValidateUser(model.UserName, model.Password)) 
      { 
       FormsService.SignIn(model.UserName, model.RememberMe); 
       log.Debug("User: " + model.UserName + " logged in."); 
       return RedirectToAction("Travel", "Travel"); 
      } 
     } 
    } 
    catch(.... 

今、このアプリは、以下のんTravelControllerにリダイレクト:

public ActionResult Travel() 
{ 
    try 
    { 
     string userName = Membership.GetUser().UserName; 
     ... code ... 
    } 
    catch(Exception ex) 
    { 
     throw; 
    } 
} 

だから、これはすべてのChromeとFirefoxで正常に動作しますが、私は同じを実行しようとするときieまたはsafariを使用しているコードでは、Membershipオブジェクトはnullです。

私は、それが何らかの形でのiframeに関連している感がありますが、私は2番目の今、すべてを推測しています。私はiframeの外でそれを実行する場合。つまり、私が試したすべてのブラウザでURLが直接呼び出されるということです。

アイデア? ありがとうございます。

+1

p3pヘッダーを見ましたか? –

答えて

2

認証はCookieに基づいています。 Internet Explorerでは、iframe内のサードパーティサイトが、機械可読プライバシーポリシーを提供していない場合、Cookieを使用することはできません。詳細は、http://www.softwareprojects.com/resources/programming/t-how-to-get-internet-explorer-to-use-cookies-inside-1612.htmlおよびhttp://en.wikipedia.org/wiki/P3Pを参照してください。

だから、部位(単数または複数)に適切なヘッダを追加する必要があり、それが正常に動作する必要があります。

希望に役立ちます。

関連する問題