如何更改Owin.AuthenticationIdentityManager的PasswordValidator设置?

时间:2013-10-10 18:03:46

标签: authentication visual-studio-2013 owin asp.net-identity

此自动生成的代码注册了一个新用户:

var manager = new AuthenticationIdentityManager(new IdentityStore());
User u = new User(userName) { UserName = userName };

IdentityResult result = manager.Users.CreateLocalUser(u, Password.Text);
if (result.Success) 
{ ... }

我们如何更改密码验证设置?
这是我用dotPeek找到的:
AuthenticationIdentityManager类实例包含UserManager,它使用PasswordValidator验证密码:
来自Microsoft.AspNet.Identity.UserManager类:

result = this.PasswordValidator.Validate(password);

internal IStringValidator PasswordValidator
{
  get
  {
    return this.Manager.Settings.GetIdentityOptions().PasswordValidator;
  }
}

类Microsoft.AspNet.Identity.IdentityOptions:

public IdentityOptions()
{
  this._defaultPasswordValidator = new IdentityOptions.DefaultPasswordValidator(this);
  this._defaultUserNameValidator = new IdentityOptions.DefaultUserNameValidator(this);
  this.MinRequiredPasswordLength = 6;
  this.LocalLoginProvider = "Local";
}

public IStringValidator PasswordValidator
{
  get
  {
    return this._passwordValidator ?? (IStringValidator) this._defaultPasswordValidator;
  }
  set
  {
    this._passwordValidator = value;
  }
}

我无法找到可以访问或替换IdentityOptions实例的位置。有没有示例或文档?

1 个答案:

答案 0 :(得分:1)

RTM版本似乎已经删除了AuthenticationIdentityManager。尝试升级到最新的预发布版本。

在最新版本中,您可以向UserManager提供PasswordValidator实现。这样可以在您的应用中自定义密码强度验证。

ASP.NET Identity nighlty packages are now available on MyGet