在使用cookie / session跟踪用户身份验证状态时,有关于服务器端行为的基本问题。
以基于会话的用户身份验证为例 - 我们每次用户登录时都会分配一个唯一的会话ID。假设这些会话存储在持久存储中,对于后续页面请求我们应该访问数据库还是应该有一个缓存最近在服务器端使用/有效会话ID。
如果是cookie,一旦服务器在客户端请求页面时向客户端发送cookie,服务器是否认为客户端已经过身份验证并且是返回用户?
此外,在ASP中,每次经过身份验证的用户请求受保护的页面时,都会点击成员资格提供程序会话表吗?
修改
我对阅读formauth后的理解 -
Webserver包含应用程序和一堆Web服务
用户首次访问该站点并通过登录页面登录
凭据对用户存储(数据库)进行了valiadated
创建FormsAuthenticationTicket并使用FormsAuthentication加密故障单并设置身份验证cookie
用户的后续请求将该身份验证cookie传递给服务器
服务器解密该auth cookie。
如果该auth cookie可以解密但尚未过期,则服务器允许访问。 目前没有针对用户商店进行检查。
答案 0 :(得分:0)
使用会话:这取决于您使用的会话商店的模式。如果您正在使用InProc,那么您不会访问数据库,但是使用sql server模式,您将在每次请求时访问数据库。
使用Cookie: Asp.net FormsAuthentication(也被会员使用)可以使用cookie来存储FormsAuthenticationTicket。这是决定用户是否经过身份验证的关键因素。 阅读教程,这是基础知识。