0

SilverLight 응용 프로그램에서 버그를 분류하는 작업이 제공되었지만 인증에 대한 지식이 기본적으로 기본이므로 도움이 필요합니다.여러 브라우저 탭에서 사용자 인증

사용자가 응용 프로그램에 로그인하고 다른 브라우저 탭/창을 열어 응용 프로그램 내에서 URL에 액세스하면 문제가 발생합니다. 이는 완전히 수용 가능하며 시스템은 알고있는 한 제대로 작동합니다. 문제는 사용자가 한 탭/창에서 응용 프로그램을 로그 아웃 한 다음 다른 탭/창에서 계속 작업을 시도 할 때 발생합니다.이 경우 사용자가 수행하는 작업에 따라 다양한 오류가 발생합니다.

우리는 이미 데이터베이스와의 연결 문제를 감지 할 수있는 타이머를 가지고 있으므로 여기에 사용자가 인증되었는지 확인하는 것이 좋은 시작이 될 것이므로 AuthenticationService.User.Identity.IsAuthenticated을 확인했지만 불행히도 항상 사실입니다. 그래서 내가 연구하고 내 코드를 디버깅하고 해당 속성은 실제로 일단 Logout 메서드가 완료되면 false로 설정되지만 사용자가 다른 탭/창에서 로그 아웃 한 후에는 응용 프로그램을 디버깅 할 때이 경우가 아닌 것 같습니다.

나는 인터넷에서 연구했으나 찾을 수있는 비슷한 모든 문제는 관련이 없거나 완전히 이해하지 못하는 것으로 인해 발생합니다.

시스템 FormsAuthentication에서 상속 인증 클래스를 사용하지만, 모든 LoginLogout 및 함수베이스 WCF RIA AuthenticationService 서비스 방법을 사용한다.

누구든지 문제가 될 수있는 제안을 해주실 수 있습니까?

+0

당신이 첫 번째에서 로그 아웃하는 동안 당신이 오류를 어떻게해야합니까, 두 번째 탭에서 모든 작업을 수행하려고 할 경우 당신이 로그 아웃했다는 사실 때문에 생긴 겁니까? –

+0

@CorneaAli 내가 얻는 오류는 일반적으로 사용자가 'AuthenticationService'에서 로그 아웃 할 때 의미가있는 서비스 실패를 기반으로합니다. 그러나 응용 프로그램은 서비스 호출을 시도 할 때 '인식'하는 것처럼 보입니다. – XN16

답변

1

기본적으로 로그 아웃하면 서버가 서버 메모리/세션 상태 등에서 세션을 파괴합니다. 동일한 클라이언트의 새로운 요청이있는 경우 서버는 세션 ID 쿠키를 읽고 일치하려고 시도합니다 기존 세션 중 하나를 사용합니다. 이 세션을 찾지 못하면 직면 한 예외가 발생합니다.

SilverLight 응용 프로그램이 있으면 기본적으로 (서비스 호출)이 필요할 때까지 서버에 요청을 보내지 않는 클라이언트 응용 프로그램입니다. 내 생각에 당신은 다른 모든 곳의 클라이언트 측에서도 사용자를 로그 아웃하기 위해 모든 애플리케이션 인스턴스에 로그 아웃 메시지를 보내야한다고 생각합니다.

은 어쩌면이 링크는 도움이 될 것입니다 당신

Can silverlight detect or communicate across browser instances?

Writing a javascript file from another javascript

+0

귀하의 링크 중 하나에서 상세하게 설명 된 메시징 시스템을 사용했습니다. 많은 작업과 테스트가 있지만 꽤 잘 작동하는 것 같습니다. 감사. – XN16