Asp.net 使用会话或cookie维护用户身份验证状态时的服务器端行为

Asp.net 使用会话或cookie维护用户身份验证状态时的服务器端行为,asp.net,language-agnostic,authentication,asp.net-membership,session-state,Asp.net,Language Agnostic,Authentication,Asp.net Membership,Session State,在使用Cookie/session跟踪用户身份验证状态时,有一个关于服务器端行为的基本问题 以基于会话的用户身份验证为例,我们在用户每次登录时分配一个唯一的会话id。假设这些sessionid存储在持久性存储中,对于后续页面请求,我们应该访问数据库,还是应该在服务器端缓存最近使用的/有效的会话id 在cookie的情况下,一旦服务器向客户端发送cookie,下次客户端请求页面时,服务器是否假定客户端已经过身份验证并且是返回用户 另外,在ASP中,是否每次经过身份验证的用户请求受保护的页面时都会命

在使用Cookie/session跟踪用户身份验证状态时,有一个关于服务器端行为的基本问题

以基于会话的用户身份验证为例,我们在用户每次登录时分配一个唯一的会话id。假设这些sessionid存储在持久性存储中,对于后续页面请求,我们应该访问数据库,还是应该在服务器端缓存最近使用的/有效的会话id

在cookie的情况下,一旦服务器向客户端发送cookie,下次客户端请求页面时,服务器是否假定客户端已经过身份验证并且是返回用户

另外,在ASP中,是否每次经过身份验证的用户请求受保护的页面时都会命中成员资格提供程序会话表

编辑

我的理解是在阅读formsauth的文章-

Webserver包含应用程序和一组web服务

用户首次访问该站点并通过登录页面登录

凭据针对用户存储区(db)有效

创建FormsAuthenticationTicket,并使用FormsAuthentication加密该ticket并设置身份验证cookie

来自用户的后续请求将该身份验证cookie传递给服务器

服务器解密该身份验证cookie


如果该身份验证cookie可以解密且未过期,则服务器允许访问此时不检查用户存储。

会话:这取决于您使用的会话存储模式。如果您使用的是InProc,您不会访问数据库,但在sql server模式下,您将在每次请求时访问数据库

与Cookies: Asp.net(会员也可以使用)可以使用cookies存储FormsAuthenticationTicket。这是决定用户是否经过身份验证的关键要素。
阅读本教程,这是基础知识。

谢谢链接。混淆之处在于cookie是如何在后续访问中得到验证的,该链接明确指出,一旦设置了auth cookie,服务器就会信任后续请求(客户端也会发送auth cookie)……它只使用formsauthentication模块上的decrypt方法。