ASP.NET表单身份验证的工作原理:从请求中识别Cookie
我正在阅读ASP.NET中的表单身份验证,一时无法理解: James输入用户名和密码,它们保存在数据库中。用户名中的cookie被创建、加密并附加到响应中。据我所知,当我们收到请求时,我们需要确认收到的cookie来自James,因此我们可以显示他的定制页面ASP.NET表单身份验证的工作原理:从请求中识别Cookie,asp.net,.net,form-authentication,Asp.net,.net,Form Authentication,我正在阅读ASP.NET中的表单身份验证,一时无法理解: James输入用户名和密码,它们保存在数据库中。用户名中的cookie被创建、加密并附加到响应中。据我所知,当我们收到请求时,我们需要确认收到的cookie来自James,因此我们可以显示他的定制页面 我想了解的是,系统将如何从cookie中检索用户名,然后从db中加载其信息?Afaik Forms Authentication不会在任何数据库中存储或加载任何内容。您可以使用数据库存储用户名和密码,也可以将它们放在web.config中。
我想了解的是,系统将如何从cookie中检索用户名,然后从db中加载其信息?Afaik Forms Authentication不会在任何数据库中存储或加载任何内容。您可以使用数据库存储用户名和密码,也可以将它们放在web.config中。如何存储用户凭据并对其进行验证取决于您,可以与表单身份验证分开进行 验证用户(针对数据库或其他逻辑存储)后,使用FormsAuthentication写入身份验证cookie。您不必担心解密cookie 您可以从System.Threading.Thread.CurrentPrincipal.Identity.Name获取用户名。要从数据库中检索用户信息,您需要使用主体标识名为if的值来查询数据库 对评论的回应 是的,您可以对成员资格提供程序、active directory或您自己的自定义用户数据库使用表单身份验证。FormsAuth根本不关心密码,除非它存储在web.config中(如blowdart更完整的回答所述)。它只是写入cookie,cookie被解密并用于自动创建线程标识 其他信息
尽管这被标记为答案,但要完整得多。如果您在ASPX页面或MVC控制器中需要标识,那么您确实不应该从线程获取标识,请使用他引用的属性 您可以通过调用User.Identity.Name在web表单中获取用户名,例如:
protected void Page_Load(object sender, EventArgs e)
{
string userName = User.Identity.Name;
}
ASP.NET为您解释cookie,您不必自己阅读。或者您的问题是如何在数据库中存储用户和密码?Forms Auth与存储无关。它不必使用数据库,事实上,您可以将它与中的用户名和密码一起使用 所以发生的是
您将注意到,当用户登录时,数据库中没有存储任何内容。所有这些都是表单身份验证令牌,在每次请求时从其存储中检索用户的工作已经为您完成。使用字符串解析和SQL(加上一些加密)Hm,我在手册和ASP.NET手册中没有提到任何数据库。这一切看起来都像是一种魔力。我很高兴知道更多关于它是如何工作的。你刚才说“它们保存在数据库中”。它通常使用SQL Server或Access;它是在Web.configThank中配置的。据我所知,通过表单身份验证,我们可以发送加密的cookie。然后,当请求到来时,系统检查其cookie信息,然后将其解密回FormsAuthenticationTicket并设置Identity.Name。那就看我们怎么处理了。对吗?@arctic_dev-对。要处理身份验证、授权和存储用户相关信息,可以使用ASP.NET中的提供程序。当然,也可以自己动手。谢谢,我知道我们可以使用会员资格提供商转到MSSQL或使用裸表单身份验证,然后自己完成所有工作。如果您想自己完成工作(为什么?!),那么正确的方法是创建您自己的会员资格提供商,这样,标准ASP.NET部件就可以使用您的自定义代码。感谢您提到用于检索用户名的属性!auth cookie中存储了哪些内容?