为什么不使用aspxauth令牌作为会话ID

时间:2013-09-16 20:41:25

标签: asp.net session forms-authentication

为什么我们需要第二种机制,例如表单身份验证机制,保持状态? 我对使用会话令牌的原因有很好的理解。我也了解表单身份验证机制。我不明白为什么我们需要这两个。

由于formauth cookie是唯一的,我们可以使用它来跟踪用户的状态,对吧?我觉得这会更安全:我们跟踪状态,并且我们知道用户已经过身份验证。我搜索了很多,并且人们经常说,在asp中,将sessionid和身份验证令牌链接在一起是一种很好的做法......这实际上与仅使用两者中的一个相同,不是吗?

我可以想到我们需要匿名状态的一种情况是在用户不一定需要登录的应用程序中。但是,我们再次进行匿名身份验证,对吧?

2 个答案:

答案 0 :(得分:1)

可以单独交换会话和身份验证模块。这将增加他们的复杂性,试图相互检测,以便他们可以在这种情况下共享一个cookie。

它也会(意外地)将操作链接在一起。例如,退出应用程序会导致会话被删除。这可能是首选,但它只适用于特定模块组合。

如果您愿意,您可以自由扩展默认模块以共享相同的cookie。您甚至可以通过更改web.config中的设置来强制他们使用相同的cookie。

答案 1 :(得分:1)

在ASP的早期阶段,会话通常用作身份验证cookie。虽然auth和会话cookie在简单的情况下重叠,但在许多情况下它们需要分开。

  • auth由ASP.NET以外的其他东西处理
  • 会话已维护,但身份验证已过期(例如亚马逊购物车)
  • 会话可以过期,但是auth cookie会保留(例如,记住我的登录信息)