0

也许我错过了一些关于此的基础知识,我只是不明白为什么表单身份验证不是构建在 Session 之上。

我在表单身份验证超时和会话超时方面遇到了一些问题,感谢像这样的博客文章,我了解如何解决这些问题

但是他们为什么要分开呢?

4

2 回答 2

4

我只是不明白为什么表单身份验证没有构建在 Session 之上。

表单身份验证使用在所有应用程序中通用的 cookie。只有当前经过身份验证的用户名存储在 cookie 中。另一方面,会话可以存储任意大的值,因为它存储在服务器上。您不能将任意大数据保存到 cookie 中。会话状态有很多问题。例如,如果您在 Web 场中运行,则需要确保使用进程外会话持久性而不是默认的 InProc,以便 Web 场的所有节点可以共享相同的会话数据。就我个人而言,我从不在我的应用程序中使用会话。我要做的第一件事是确保禁用 web.config 中的所有会话状态:

<sessionState mode="Off" />

这样,我确信从事我项目的开发人员不会犯使用 ASP.NET 会话的错误。它们将原本打算是无状态的 Web 应用程序变成有状态的。

使用 cookie,您就不会遇到这样的问题。您可以将任意数量的节点投放到您的网络农场,以应对不断增加的用户负载,而无需担心服务器上的任何状态。

于 2013-02-05T16:55:43.157 回答
2

基本的,因为有些人可能选择只使用其中一个,并且因为它们是两个不同的模块 - 并且都提供了制作自定义模块的界面。

一个用户也可以在没有经过身份验证的情况下进行会话

还有一些其他人(比如我)可以制作完全自定义的会话模块,但保留身份验证模块。

所以这是两个不同的模块,它们不能连接。

于 2013-02-05T16:55:51.557 回答