我有一个使用Forms身份验证的ASP.NET 2.0应用程序。当用户登录应用程序时,会创建一个会话对象以及一个cookie,一切都很好。该应用程序允许用户根据其权限在多个数据库之间进行选择。问题是如果用户想要在IE中打开另一个选项卡以登录并在另一个数据库中工作,那么他们登录到它的第一个选项卡就不起作用了。它只是看到上一个选项卡的会话并将新选项卡直接加载到上一个选项卡的数据库中,绕过登录屏幕。
有没有办法唯一地分隔会话,以便我可以让用户在同一个浏览器(不同的标签)中登录应用程序,并将多个会话连接到正确的选项卡?
由于 克里斯
答案 0 :(得分:3)
我认为会话不是存储数据的正确位置。您可以考虑使用其他状态维护解决方案,例如ViewState,Form变量,Querystring,cookies等。
您可以从Here
中找到更多信息答案 1 :(得分:1)
不要使用会话。在隐藏的田地里传递一切。
每次用户做出您不希望被复制到另一个窗口的选择时,将该值存储在隐藏字段中,以便它与下一个回发一起传递。显然,如果执行任何其他页面导航,这些数据将会丢失,因此这限制了您。
答案 2 :(得分:1)
浏览器中的标签不提供这样的隔离,即使打开浏览器的新实例通常也不支持这一点 - 它依赖于浏览器。您可以考虑将数据库名称作为参数添加到URL中,这对于每个选项卡都是不同的
答案 3 :(得分:1)
会话确实不是一个好选择,因为当你试图打开应用程序的新实例时,实际上是在杀死你以前的会话。其他实现方式是使用视图状态。