2014-05-13 1 views
0

웹 서비스가 있습니다. User.asmx라고 가정하고 LogoutUser() 메서드가 있습니다.ASMX 웹 서비스에서 FormsAuthentication.SignOut() 사용

서비스는 외부 웹 사이트에서 사용하며 사용자가 외부 웹 사이트에서 로그 아웃 할 때 서비스를 호출하여 내 웹 사이트에서 사용자를 로그 아웃합니다. 이것은 사용자가 내 사이트에 로그인 할 때 외부 웹 사이트로 리디렉션 될 때 필요합니다.

어떻게하면 좋을까요? FormsAuthentication.SignOut()은 로컬 또는 내 테스트 컴퓨터에서 작동하지만 클라이언트가 서비스를 호출하려고하면 사용자가 로그 아웃하지 않습니다. 우리는 웹 사이트에서 양식 인증을 위해 쿠키를 사용하는 것을 피할 수 없습니다.

미리 감사드립니다.

답변

0

이렇게하면 작동하지 않습니다. 사용자는 서버 A (외부 사이트)과 B (사이트)에 요청을하고 AB의 쿠키를 가지고 다음 A를 호출하면 A 어떻게 든 당신이 나쁜 시간이 B의 쿠키를 삭제 클라이언트를 만들 것 B를 호출 할 것으로 예상하는 경우 .

규칙은 사이트 A이 (가) 사이트 B에 대한 쿠키를 결코 관리 할 수 ​​없도록되어 있습니다. 또한 웹 사이트에서 로그 아웃되는 파트너의 웹 사이트가 아니라 사용자가 로그 아웃되기를 원합니다. 사용자가 A가 (그들을), 다음 AB를 가리키는 iframe이 (당신)과 통화 FormsAuthentication.SignOut를 가리키는 리소스를 반환 호출 할 때 그것이 작동되도록하는 방법

하나입니다. 공식적으로

, A는 B가 다음 FormsAuthentication.SignOut()을 수행 logoutB.aspx을 가져야한다
<html> 
<body> 
    <iframe src="http://b/logoutB.aspx" style="display : none" /> 
</body> 
</html> 

을 반환 logoutA.aspx해야한다.

이렇게하면 사용자가 A에서 페이지를 가져오고 페이지의 iframe이 B를 가리키면 브라우저가 B로 이동하여 로그 아웃됩니다.

+0

그래,이게 정확히 내가 생각했던 것이지만 사용자를위한 많은 리디렉션을 고려하기를 꺼리는 것입니다. 먼저 B에서 A로, 그리고 나서 A에서 B로 ...하지만 네가 새로운 페이지를 설정하는 선택의 여지가 없다고 생각합니다. 로그 아웃 비트를 보낸 다음 사용자를 사이트 B로 리디렉션합니다. 도움에 감사드립니다. –

+0

다행히도 'iframe'은 내부적으로 처리되므로 리디렉션 할 필요가 없습니다. –

+0

도움 주셔서 감사합니다 ... 마지막으로 해결 된 문제 :) –