2014-02-10 49 views
0

我一直在考虑一个任务进行梳理在Silverlight应用程序中的错误,但我的身份验证的知识是基本的最好的,所以我很卡,并寻求帮助。身份验证的用户在多个浏览器标签

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

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

我已经研究了互联网上,但所有我能找到类似的问题是由东西是不相关的,或者说,我完全不了解造成的。

该系统使用其从FormsAuthentication继承的认证类,但所有的LoginLogout函数使用碱WCF RIA AuthenticationService服务方法。

任何人都可以提出一些建议,可能是什么问题?

+0

如果你尝试做在第二个选项卡的任何行动,而你已经从第一个退出,你得到任何错误由于您已注销的事实而导致的? –

+0

@CorneaAli我得到的错误通常是基于服务失败的,这在用户注销'AuthenticationService'时是有意义的,但是应用程序似乎只在尝试调用服务时“实现”了这一点。 – XN16

回答

1

注销时基本上会发生什么是服务器会破坏你的会话在服务器内存/会话状态等,如果有来自同一客户端的新请求,服务器将读取的会话cookie,并尝试匹配它与现有的会议之一。如果这个会议不会被发现,那么我们会得到你面临的例外。

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

也许这个链接将帮助您

Can silverlight detect or communicate across browser instances?

Writing a javascript file from another javascript

+0

我使用了在其中一个链接中详细描述的消息传递系统。很多工作和测试,但它似乎工作得很好。谢谢。 – XN16

相关问题