> 웹 프론트엔드 > JS 튜토리얼 > 쿠키손실 문제(인증실패) 인증(사용자 확인 정보)도 손실됩니다_javascript 기술

쿠키손실 문제(인증실패) 인증(사용자 확인 정보)도 손실됩니다_javascript 기술

WBOY
풀어 주다: 2016-05-16 18:51:51
원래의
1422명이 탐색했습니다.

이런 당황스러움을 겪어보신 적이 있으신가요?

귀하의 페이지 인증이 폼, 윈도우 통합 인증 등 쿠키 기반 방식을 사용하는 경우 다음 작업 후 인증에 실패하고 인증(사용자 확인 정보)이 손실되어 로그인해야 하는 경우가 있습니다. 다시
시스템이 정상적으로 로그인된 후:

첫 번째 페이지(PageA.htm): window.showModalDialog() 이후 두 번째 페이지(PageB.htm)가 나타납니다.

두 번째 페이지(PageB.htm): window.open() 이후 팝업창(PageC.htm)이 가끔 로그인 페이지로 점프하는 경우가 있습니다

이는 서로 다른 프로세스에 존재하는 서로 다른 페이지로 인해 발생하며 이로 인해 ID 정보가 동기화되지 않고 인증 실패가 발생합니다. 그러나 이는 특정 확률로 발생하며 MS 컨설턴트의 도움으로 마침내 방법을 찾았습니다.
요약하면 showModalDialog()시 window를 PageB.htm에 object 매개변수로 전달하면 됩니다. PageB에서는 이 매개변수를 open()에 사용하면 문제가 해결됩니다.
자세한 내용은 다음과 같습니다.
-- ----------PageA.htm------------
...
var obj = new Object();
obj. myTestWindowA = window;//이 창을 개체 매개 변수에 저장
window.showModalDialog("PageB.htm",obj,"");
...
--------- - -------------

----------PageB.htm-------------
...
var obj = window.dialogArguments;//매개변수 가져오기 이전 페이지
obj.myTestWindowA.open("PageC.htm");//이전 페이지에서 전달된 매개변수를 사용하여 다음 페이지 열기
...
------ - --------------
테스트 후 더 이상 신원 손실이 없으며 작업이 완료됩니다!
신중한 친구들은 이러한 작업으로 인해 PageC.htm에서 문제가 발생한다는 것을 알게 될 것입니다. 왜냐하면 오프너는 PageB.htm이 아니라 PageA.htm이고 window.opener는 PageB.htm과 통신하는 데 사용할 수 없으며 open() I 개체 매개변수를 다시 전달할 수 없습니다. 당황하세요!
다행히 JavaScript에서는 객체가 큰 나무이므로 그 가지에 무엇이든 걸 수 있습니다. 따라서 PageC.htm이 PageB.htm과 통신할 수 있도록 PageB.htm을 다음과 같이 수정했습니다.
-----------PageB.htm-------------
...
var obj = window.dialogArguments;//이전 매개변수 가져오기 페이지
var obj.myTestWindowA.myTestWindowB = new Object();
obj.myTestWindowA.myTestWindowB = window; //페이지A의 창 분기 아래에 페이지B의 창을 걸어 놓습니다.
obj.myTestWindowA. PageC.htm");//이전 페이지에서 전달된 매개변수를 사용하여 다음 페이지 열기
...
------ --- -------------
이렇게 하면 PageC의 window.opener.myTestWindowB를 통해 window.opener.myTestWindowB.document와 같이 PageB 페이지의 개체와 통신할 수 있습니다. ("TextBox1").value="확인"

참고:
1. 이는 단순한 상황일 수 있습니다. 먼저 ModalDialog를 표시하면 ID 정보가 손실될 수 있지만 문제 없이 창을 다음 페이지로 넘기면 문제가 발생합니다. 해결될 수 있습니다.

(http://www.ourac.net/read.php?tid=45123&fpage=2 참조)
2. 발생하는 경우 http://support.microsoft.com/default.aspx?scid=kb;EN-US;196383

을 참조하세요.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿