2014-01-13 2 views
0

asp.net mvc4 응용 프로그램을 사용하고 있습니다. 양식 인증을 사용하고 있습니다. 내 시나리오는 인증 후 auth 토큰이 IE를 사용할 때 요청 헤더에서 전달하지 않습니다. 하지만 크롬과 모질라는 잘 작동합니다. 제 인증 방법은 첫 번째 방법으로하고 두 번째 방법은 아약스 호출입니다. 아약스 호출에 문제가 있습니까?인증 토큰이 IE에서 전달되지 않습니다

첫 번째 인증 방법은 getjson 메서드입니다. 그런 다음 저는 아약스 호출을 사용하고 있습니다.

if (user != "" && passwd != "" && location != "" && location != -1) { 
     $.getJSON(window.contexthttproot + "/Account/Location", { 'Username': user, 'Password': passwd }, function (items) { 

     if (items.length > 0) { 
          $('#Serverow').hide(); 
          $('#locate').show(); 
          $('#location').show(); 


    $("#Username").attr("disabled", "disabled"); 
         $("#Password").attr("disabled", "disabled"); 
         $("#Location").fillSelect($.map(items, function (item) { 
          return { 
           ID: item.LocationID, 
           Name: item.LocationName 
          }; 
         })); 
         setTimeout(function() { 
          $('#spinner').fadeOut('fast'); 
         }) 
        } 
        else { 
         setTimeout(function() { 
          $('#spinner').fadeOut('fast'); 

         }) 

        } 
       }); 
      } 
} 


    if (user != "" && passwd != "" && location != "" && location != -1) { 

       var json = "{'location':'" + location + "','locationName':'" + loctext + "'}"; 

       $.ajax({ 
        url: window.contexthttproot + "/Report/ReportLocation", 
        type: 'POST', 
        datatype: "json", 
        contentType: "application/json; charset=utf-8", 
        cache: false, 
        data: json, 
        success: function (items) { 

         window.location.replace("/LandingPage/Landing"); 
         setTimeout(function() { 
          $('#spinner').fadeOut(35000); 
         }) 
        }, 
        error: function (xhr, status) { 

        } 

       }); 
      } 
+0

IE의 버전은 무엇입니까? –

+0

이것을 확인하십시오 http://stackoverflow.com/questions/19725827/internet-explorer-11-session-issue-with-asp-net-4-0 –

+0

@Pjack IE 11 사용. – Sajeev

답변

0

소스 SO

IE 이상한 버그 앓고 - 도메인 이름에 영숫자가 아닌 문자가있는 경우 몇 가지 이유를 들어, IE가 쿠키를 유지하지 않습니다 ... 따라서 당신은거야 서로 다른 호출간에 지속적인 세션이 없습니다.

도메인에 test_domain 또는 test-domain 또는 그 외 도메인과 같은 영숫자가 아닌 문자가 있는지 확인하십시오. 또한 here

== Workaround == 

In the meantime to make it work and to avoid similar issues in the future, I use a file ~\App_Browsers\BrowserFile.browser with the following: 

<browsers> 
<browser refID="Default"> 
<capabilities><!-- To avoid wrong detections of e.g. IE10 --> 
<capability name="cookies" value="true" /> 
<capability name="ecmascriptversion" value="3.0" /> 
</capabilities> 
</browser> 
</browsers> 

에서

있어 솔루션은 .. 문제는 일부 IIS 인스턴스 IE10은 쿠키 브라우저 (즉 캔트 지원 쿠키) 인 것을 생각에 달려있다. 우리의 문제의 경우, 서버는 인증 쿠키를 설정하고 그것을 브라우저로 다시 보내고 있지만 이후의 요청에서 쿠키를 무시합니다.

해결 방법은 IE10이 쿠키 (이 페이지의 다른 대답에 설명 된)를 수행 할 수 있음을 알 수 있도록 브라우저 기능을 패치하거나 브라우저에서 '쿠키를 사용할 수 있다고 생각하는 경우에도 쿠키를 사용하도록 기본 동작을 변경하는 것입니다. 쿠키를하지 마십시오.

쿠키 = "UseCookies"

<authentication mode="Forms"> 
    <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" /> 
</authentication> 
+0

내 도메인에 특별한 기호가 포함되어 있지 않습니다. 내 브라우저가 성능이 좋지 않은 경우 (예 : 9)이 문제를 해결할 수있는 아이디어를 제안 할 수 있습니다. – Sajeev

+0

@Sajeev는 편집 된 답변을 확인했습니다. 답변은 내 답변 – Nilesh

+0

에 게시되어 있습니다. 내 asp.net mvc application.But 위의 시도했다 내 첫 login.During 두 번째 시간 로그인 정식 쿠키가 요청 헤더에 전송되지 않습니다. – Sajeev

0

이 당신의 asp.net 응용 프로그램 서버에서 실행중인 .NET의 버전을 확인합니다

우리는 단지의 Web.config에 우리의 양식 섹션에 다음을 추가 . 4.5 세 이상이 필요할 수도 있습니다. IE 11에는 몇 가지 알려진 문제점이 있습니다.

http://www.microsoft.com/en-us/download/details.aspx?id=30653

여기에 비슷한 문제를 가진 다른 링크입니다.

IE11 and the .NET User.Identity.IsAuthenticated always returns false

관련 문제