Asp.net 如何在同一浏览器的不同选项卡中维护会话?

Asp.net 如何在同一浏览器的不同选项卡中维护会话?,asp.net,session,Asp.net,Session,我的网站用于管理客户帐户。如果我通过网站访问CustomerA的帐户,然后打开一个新选项卡并访问CustomerB的帐户,则持有客户ID更新的会话将认为我正在处理CustomerB。然后,如果我单击CustomerA的选项卡并开始编辑该页面,那么实际上我正在编辑CustomerB的数据库记录。这已经发生了,并导致了各种各样的问题,所以我需要找到一个傻瓜式的方法来阻止它。我不想将客户ID放在URL中,因为这会使其被滥用。会话不是保存此类信息的地方,因为您正在描述的问题。您需要将客户ID与页面本身一

我的网站用于管理客户帐户。如果我通过网站访问CustomerA的帐户,然后打开一个新选项卡并访问CustomerB的帐户,则持有客户ID更新的会话将认为我正在处理CustomerB。然后,如果我单击CustomerA的选项卡并开始编辑该页面,那么实际上我正在编辑CustomerB的数据库记录。这已经发生了,并导致了各种各样的问题,所以我需要找到一个傻瓜式的方法来阻止它。我不想将客户ID放在URL中,因为这会使其被滥用。

会话不是保存此类信息的地方,因为您正在描述的问题。您需要将客户ID与页面本身一起传递(在隐藏字段或url中),因此当您发回表单时,它确切地知道您要做什么。会话不会保护您,也不会增加任何额外的安全性。您需要确定用户是否具有正确的权限,因此您应该关注这一方面。

在页面加载时将客户id保存到viewstate,在回发时检查viewstate的客户id是否=会话的自定义id,这样您就可以了!否则只需放弃并显示错误消息。如果您不想公开ID,请获取customerID;生成一个随机令牌并将该令牌添加到URL。在内存中保留令牌和ID之间的链接。您仍然需要验证它,因为不存在默默无闻的安全性