ASP.NET表单身份验证的工作原理:从请求中识别Cookie

mak*_*nse 2 .net asp.net form-authentication

我正在阅读ASP.NET中的表单身份验证,并且无法理解某些时刻:

James输入用户名密码,它们保存在数据库中.来自用户名的cookie将创建,加密并附加到响应中.据我所知,当我们收到请求时,我们需要认识到收到的cookie来自James,因此我们可以显示他的自定义页面.

我想了解的是系统将如何检索用户名表单cookie然后从db加载他的信息?

blo*_*art 6

Forms Auth与存储无关.它不必使用数据库,实际上您可以将它与web.config中的用户名和密码一起使用.

那么会发生什么

  1. 用户登录.
  2. 用户通过成员资格提供程序进行身份验证(可以使用SQL,Active DIrectory,web.config,Oracle,MySQL等)
  3. 为用户创建表单身份验证令牌,并通过cookie放置在用户计算机上.
  4. 每个后续请求都会读取表单身份验证令牌,并查询提供程序以获取用户详细信息.
  5. 用户详细信息用于填充HttpContext中的用户标识和请求的当前线程,然后可供您的代码使用.

在你的代码可以检查用户在页面类(Web窗体)财产或用户 在控制类(MVC)属性.

虽然您可以通过当前线程或当前上下文来获取它,但是不建议这样做,特别是一旦您开始使用后台任务,身份可能不会传播到线程,或者上下文可能会发生变化.

您会注意到,当用户登录时,数据库中不会存储任何内容.它都在表单身份验证令牌中,并且在每个请求上从您的存储中检索用户的工作都是为您完成的.