ASP.NET Forms身份验证 - 何时使用?

时间:2011-01-12 06:03:07

标签: forms-authentication asp.net-2.0

我无法决定是否应该进行表单身份验证?表单身份验证通常用于个性化,其中内容是为已知用户定制的。我没有这样的要求。我在数据库中有用户名和密码,需要根据数据库对用户进行身份验证吗?在ASP.NET 2.0中实现相同目标的最佳推荐做法是什么?

2 个答案:

答案 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的指导,或者在出现问题时开始一个新问题。