在多个浏览器选项卡中验证用户

时间:2014-02-10 12:36:40

标签: c# authentication forms-authentication wcf-ria-services

我被赋予了一个任务来解决SilverLight应用程序中的错误,但是我的身份验证知识基本上是基本的,所以我很困难并寻求帮助。

问题是,如果用户登录到应用程序,然后打开另一个浏览器选项卡/窗口并从应用程序中访问URL,这是完全可以接受的,并且系统可以正常工作。当用户从一个选项卡/窗口退出应用程序然后尝试继续在另一个选项卡/窗口上工作时会出现问题,在这种情况下,根据用户的操作会抛出各种错误。

我们已经在应用程序中有一个计时器来检测数据库的连接问题,所以我认为检查用户在此处进行身份验证是一个好的开始,所以我检查了AuthenticationService.User.Identity.IsAuthenticated,但不幸的是,这总是真正。所以我研究并调试了我的代码,并且在Logout方法完成后该属性实际上设置为false,但是当我在用户注销后调试应用程序时,情况似乎并非如此。另一个标签/窗口。

我在互联网上进行了研究,但我能找到的所有类似问题都是由一些不相关的事情引起的,或者我完全不了解。

系统使用继承自FormsAuthentication的身份验证类,但所有LoginLogout函数都使用基本WCF RIA AuthenticationService服务方法。

有人可以提出一些建议吗?

1 个答案:

答案 0 :(得分:1)

当您基本注销时,服务器将在服务器内存/会话状态等中销毁您的会话。如果来自同一客户端的新请求,服务器将读取会话ID cookie并尝试匹配它与现有会议之一。如果找不到此会话,我们将获得您所面临的例外情况。

拥有SilverLight应用程序这基本上是一个客户端应用程序,它不会向服务器发送任何请求,直到它真正需要(服务调用)。我认为您应该向所有应用程序实例发送注销消息,以便在其他任何地方也在客户端注销用户。

也许此链接可以帮助您

Can silverlight detect or communicate across browser instances?

Writing a javascript file from another javascript