0

我在使用 ASP.NET 2.0 登录控件时遇到了一些问题。

  • 我已经使用 aspI.net regsql 工具设置了一个数据库。
  • 我检查了应用程序名称。它设置为“/”。

应用程序可以访问 SQL Server。事实上,当我去找回密码时,它甚至会把密码发给我。尽管如此,登录控件仍会继续拒绝登录。

我将此添加到web.config

<membership defaultProvider="AspNetSqlProvider">
  <providers>
    <clear/>
    <add name="AspNetSqlProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </providers>

我在连接字符串中添加了以下内容:

 <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" connectionString="Data Source=IDC-4\EXCALIBUR;Initial Catalog=allied_nr;Integrated Security=True;Asynchronous Processing=True"/>

(注意“删除名称”是为了去掉 App_Data 目录中的默认连接字符串。)

为什么登录控件不对用户进行身份验证?

4

2 回答 2

1

听起来您正在以纯文本形式存储密码,但 SqlMembershipProvider 的默认密码存储格式是“哈希”。如果将用户密码存储为散列形式,您将永远无法从数据库中检索用户密码。

于 2010-04-16T19:44:13.690 回答
0

在 Rolla 的 4 Guys 网站上写了一组关于会员提供者的精彩文章。检查一下,因为我认为它会有所帮助!

http://www.4guysfromrolla.com/articles/120705-1.aspx

来自该系列的第 4 部分:

“在会员系统中,有多种情况会导致用户的凭据无效:

  • 提供的用户名可能不存在于会员目录中
  • 用户名可能存在,但提供的密码可能不正确
  • 用户名和密码可能正确,但是:
    • 用户可能尚未获得批准
    • 用户可能被锁定;如果用户尝试使用无效密码登录指定次数(默认为 5 次),就会发生这种情况

不幸的是,如果凭据无效,ValidateUser(userName, password) 方法只会返回 False,并且不包含有关凭据无效的确切原因的信息”

于 2010-04-16T20:25:41.297 回答