2013-07-23 9 views
0

실버 라이트 Ria 응용 프로그램이 있습니다. WebContext를 사용하여 인증 직원을 만듭니다. 나는이 줄을 App.cs 생성자 (실버 라이트 비즈니스 teplate와 함께 제공함)에 가지고 있습니다. InitializeComponent();Silverlight WebContext가 mutipale 세션간에 공유됩니다.

WebContext webContext = new WebContext();
webContext.Authentication = new FormsWithTimeoutAuthentication (20);

this.ApplicationLifetimeObjects.Add (webContext);

하나의 브라우저 탭에서 응용 프로그램을 열면 모든 것이 정상입니다. 다른 탭을 열려고 시도하고 첫 번째 탭의 응용 프로그램에 영향을주는 다른 사용자로 로그인하려고합니다. WebContext 해시 코드를 추적하여 같은 결과를 얻었습니다. 따라서 WebContext는 두 응용 프로그램 인스턴스에서 공유되는 것처럼 보입니다.

이유가 궁금하십니까? 미리 감사드립니다 ...

답변

1

Silverlight는 인증을 위해 브라우저의 http 스택을 사용합니다. 양식 인증을 사용하면 브라우저 쿠키가 브라우저로 전송되며 이는 브라우저 세션의 인증 된 사용자를 식별합니다. 모든 브라우저 탭은 동일한 쿠키를 공유하므로 모든 탭이 동일한 사용자로 식별됩니다.

이 문제를 방지하려면 Internet Explorer에서 '개인 정보 보호 브라우징'을 사용하거나 Chrome에서 '시크릿 모드'를 사용해야합니다.

+0

감사합니다. 이 기능을 자동으로 만들 수 있습니까? 내 응용 프로그램을 개인 탐색 기능을 사용하여 실행할 수 있으므로 사용자가 직접 만들 필요가 없습니다. – Wasim

+0

사설 브라우징 외에도 "파일" "새 세션"을 사용할 수 있습니다. 진짜 문제는 FormsAuthentication에 있으며, Silverlight가 아닌 모든 ASP.net 응용 프로그램에서이 문제가 발생합니다. –

+0

감사합니다. 클라이언트 네트워킹 스택을 사용하여 문제에 대한 해결책을 찾았습니다. 여기에서 문제를 해결하는 기사를 찾을 수 있습니다. http://blogs.msdn.com/b/kylemc/archive/2010/05/14/ria-services-authentication-out-of-browser.aspx – Wasim