提问者:小点点

在mvc中的IE中打开新选项卡时会话将被覆盖


我在home1的索引操作中有一个主页url http://localhost:3443/home1我正在有一个会话[“home”]=home1。我有另一个主页url http://localhost:3443/home2,我有一个会话session[“home”]=home2。

现在,对于某些用户来说,上下文是登陆页面Home1。因此,如果他们点击菜单上的home按钮,或者做任何这样的activity,他们应该登陆Home1。

对于另一组用户,他们应该登陆到Home2,无论他们做什么activity,导致主页。

现在菜单.它是一个ascx控件,这里我们检查会话值是home1或Home2。基于此,我们将用户重定向到所需的登陆页面。现在我面临的问题是,当我们将http://localhost:3443/home1复制到另一个选项卡,例如tab2,然后将它改为home2,然后进行一些activity。然后回到tab1,在home2会话中,该值被重写。这会导致点击菜单中的主页链接时出现错误的登陆页面。这个问题你有什么解决办法吗?

我希望我已经正确解释了问题,如果没有请让我知道,我会进一步解释。


共2个答案

匿名用户

Session用于连接,它将包括两个选项卡(例如,为什么您可以在一个选项卡上登录到stackoverflow,然后如果您打开第二个选项卡,您仍然是登录的)

匿名用户

正如@Skuld所提到的,会话用于用户到站点的连接,所以如果用户转到另一个页面,他或她被允许转到,他们可以在一个新的选项卡中打开这个选项卡,保持原来的选项卡打开,如果这些是表单页面,您可能需要查看14 AntiForgeryToken。另外,我注意到你说这发生在IE中,这也发生在Chrome中吗?如果是这样,您可能想看看IE是否不包括Cookie。您可以将角色添加到会话中,然后从控制器将这些角色授权给home1或Home2,您应该将用户和角色授权给代码中的页面,而不是会话中的页面。没有代码就很难再帮上忙了。

希望这能让你走上正轨。