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에 포함되어 있고 safari는 iframe에 포함되어 있습니다.

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; 
    } 
} 

그래서 모두가 크롬과 파이어 폭스에서 잘 작동하지만 내가 똑같이 달릴 때. ie 또는 safari를 사용하는 코드는 Membership 객체가 null입니다.

나는 그것이 iframe과 어떻게 든 관련되어 있다는 느낌이 들지만, 나는 이제 모든 것을 추측합니다. iframe 외부에서 실행하면; 나는 모든 브라우저에서 실행되는 url을 직접 호출한다는 것을 의미한다.

아이디어가 있으십니까? 미리 감사드립니다.

+1

p3p 헤더를 보았습니까? –

답변

2

인증은 쿠키를 기반으로합니다. Internet Explorer는 iframe의 제 3 자 사이트가 컴퓨터가 읽을 수있는 개인 정보 취급 방침을 제공하지 않는 경우 쿠키를 사용하도록 허용하지 않습니다. 자세한 내용은 http://www.softwareprojects.com/resources/programming/t-how-to-get-internet-explorer-to-use-cookies-inside-1612.htmlhttp://en.wikipedia.org/wiki/P3P을 참조하십시오.

사이트에 적절한 헤더를 추가해야 정상적으로 작동합니다.

희망이 있습니다.

관련 문제