我无法决定是否应该进行表单身份验证?表单身份验证通常用于个性化,其中内容是为已知用户定制的。我没有这样的要求。我在数据库中有用户名和密码,需要根据数据库对用户进行身份验证吗?在ASP.NET 2.0中实现相同目标的最佳推荐做法是什么?
答案 0 :(得分:3)
表单身份验证用于身份验证,您可以使用成员资格信息来自定义页面,但您不必这样做。
答案 1 :(得分:1)
TL; DR: FormsAuthenication类与密码无关。您需要使用它来保持用户登录到您的网站。要验证密码,请使用Membership类或您自己的自定义系统。
来自FormsAuthentication类的文档:
表单身份验证使用户和 Web的密码验证 不需要的应用程序 Windows身份验证。有表格 身份验证,用户信息是 存储在外部数据源中, 例如成员资格数据库或 一个配置文件 应用。一旦用户是 经过身份验证,表单身份验 维护身份验证票证 一个cookie或在URL中,以便 经过身份验证的用户不需要 每个请求都提供凭证。
如果查看FormsAuthentication的类定义,您将看到Authenticate方法。文档说“根据存储在应用程序配置文件中的凭据验证用户名和密码。”您不想使用此,因为您要存储用户和数据库中的密码,而不是配置文件。这是与整个FormsAuthentication类中的密码相关的唯一方法。
发布表单票证的正确方法是使用SetAuthCookie方法,不会输入密码。那你如何/在哪里检查密码?
答案:Membership(或自定义的东西)。
ASP.NET 2.0版成员资格 功能提供安全凭证 应用程序用户的存储。它也是 提供会员API 简化了验证用户的任务 与表单一起使用时的凭据 认证。会员提供者 抽象以前的底层商店 维护用户凭据。
会员资格是一个很大的主题,你真的需要花一些时间研究它并编写一个测试应用程序。我至少阅读了Multipart Series on ASP.NET's Membership, Roles, and Profile中的前三篇文章。
读完之后,您可能会想知道是否应该编写自己的自定义成员资格提供程序。您可能需要查看SO上的一些答案,以获得stackoverflow的指导,或者在出现问题时开始一个新问题。