【问题标题】:ASP.net Web Administration Tool Forgetting users?ASP.net Web 管理工具 忘记用户?
【发布时间】:2018-10-13 23:11:18
【问题描述】:

大家好,这是我遇到的一个奇怪问题。我正在使用内置的 ASP.NET Web 管理工具来允许用户登录到我为我的工作创建的页面。到目前为止,每天只有 4 人登录该工具。登录效果很好,但有时有人无法再登录系统。现在已经发生了大约 3 次,所以我开始认为不是他们忘记了密码。

第一次发生这种情况后,我设置了密码恢复工具,但即使这样也不起作用。输入用户名只会导致“我们无法访问您的信息。请重试。”错误,这很奇怪,因为当我进入后端时,用户仍然在那里。因此,我必须删除用户并重新创建它,这目前有效,因为除了登录之外,我们没有将登录名用于任何其他操作,没有任何信息与用户相关联。如果我们扩大规模,这可能是未来的一个问题。

我想知道是否有人遇到过类似的问题,或者知道可能是什么问题?我试图对其进行一些研究,但找不到太多,或者我只是在错误的搜索条件下查找。我使用的是 Visual Studio 2010 Express,所有登录表单都是默认设置的内置控件。

如果您需要任何其他信息,请告诉我。

来自 web.config 文件:

<identity impersonate="true"/>
<authentication mode="Forms">
    <forms loginUrl="~/marcalendar/login.aspx"/>
</authentication>
<authorization>
    <allow roles="admin" />
    <allow roles="users" />
<deny users="?"/>
</authorization>

【问题讨论】:

  • 有趣!您能否在该网站的 Web.Config 中的 &lt;Membership&gt; 部分添加问题?我很想看看提供者是如何设置的。它们可能超过MaxInvalidPasswordAttempts 或被PasswordAttemptWindow 捕获(如果已配置)
  • 我为您添加了,我从未添加过会员部分,也许这就是问题所在?也许它只是设置为默认值?
  • 如果您在默认设置下使用 ASP 成员资格,则 &lt;Membership&gt;&lt;Providers&gt; 标记应位于站点顶层的 web.config 中(默认情况下)。我会发布一个答案,看看我是否可以澄清一点。

标签: c# asp.net visual-studio-2010 asp.net-membership


【解决方案1】:

我认为这里最可能的问题是您的用户被锁定(ASP 成员资格的默认配置没有给出关于登录尝试失败原因的非常明确的反馈,只是它失败了),而不是 aspnetdb不知何故丢失/弄乱了用户信息-尽管我想一切皆有可能:-)。

查看项目根级别的 Web.Config 文件。您应该会看到如下内容:

<configuration>
    ...Some other stuff here...
    <system.web>
        ...Some other stuff here...
        <membership>
            <providers>
                <clear/>
                <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
            </providers>
        </membership>

&lt;add name=.../&gt; 是其中的重要部分。您会看到一堆用于登录设置的调整参数。这里重要的是

  • passwordAttemptWindow="10",和
  • maxInvalidPasswordAttempts="5"

这意味着如果用户在 10 分钟内错误输入密码 5 次,他们将被锁定(您可以使用 MembershipUser.IsLockedOut 属性以编程方式检查这一点)。

如果这是问题所在,您需要实现MembershipUser.UnlockUser 方法(如果您也需要这部分的帮助,请告诉我)。然后你可以使用这样的代码:

MembershipUser usr = Membership.GetUser(userName); //userName is a string variable containing the username you're trying to unlock
usr.UnlockUser();

如果这不是问题,请告诉我,我可以编辑/删除此答案。

【讨论】:

  • 谢谢我检查一下,我的程序目前在顶部没有这些设置,不知道为什么,但我会实现它,看看它是否能解决问题,谢谢
猜你喜欢
  • 2014-02-24
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多