我需要重写很多asp.net会员资料,因为它不符合我的需求。因此,在我的自定义验证方法中,如果失败,请检查其密码。我抓住了aspnet_membership maxInvalidPasswordAttempts列并向其添加1。
所以在我的web.config中我把它设置为10.所以我想从web.config中获取值并与用户拥有的值进行比较。我怎么能这样做?
另外我想当我在if语句中进行比较时,我会锁定用户吗?
答案 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。根据您将要进行的自定义操作,如果您在自己的提供程序中处理所有自定义身份验证逻辑,则控制器将更加清晰。