如何从web.config中获取maxInvalidPasswordAttempts?

时间:2009-08-18 19:53:06

标签: asp.net asp.net-mvc

我需要重写很多asp.net会员资料,因为它不符合我的需求。因此,在我的自定义验证方法中,如果失败,请检查其密码。我抓住了aspnet_membership maxInvalidPasswordAttempts列并向其添加1。

所以在我的web.config中我把它设置为10.所以我想从web.config中获取值并与用户拥有的值进行比较。我怎么能这样做?

另外我想当我在if语句中进行比较时,我会锁定用户吗?

2 个答案:

答案 0 :(得分:2)

您应该在提供程序的Initialize方法中从web.config获取配置值,如下所示:

public override void Initialize(string name, NameValueCollection config)
    {
      if (config == null)
        throw new ArgumentNullException("config");

      // Initialize the abstract base class.
      base.Initialize(name, config);

      pApplicationName            = GetConfigValue(config["applicationName"], 
                                      System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);
      pMaxInvalidPasswordAttempts = Convert.ToInt32(GetConfigValue(config["maxInvalidPasswordAttempts"], "5"));
      // ...

在您的应用程序中,您将其引用为Membership.MaxInvalidPasswordAttmpts。

有一个full implementation of a custom MembershipProvider on MSDN。作为一个例子,我能够在几个小时内实现一个提供者。

答案 1 :(得分:1)

从您的应用程序中,您可以通过Membership类上的Providers集合访问与您的应用程序关联的所有提供程序。然后只使用您感兴趣的值的属性。

Membership.Providers["ProviderName"].MaxInvalidPasswordAttempts

或者您可以使用以下内容获取默认提供程序。

Membership.Provider.MaxInvalidPasswordAttempts

成员身份在System.Web.Security命名空间中,以防万一。

另一种方法可能是编写自己的MembershipProvider。根据您将要进行的自定义操作,如果您在自己的提供程序中处理所有自定义身份验证逻辑,则控制器将更加清晰。