gpt4 book ai didi

asp.net-core - Microsoft.AspNet.Identity vnext 中的 UserValidator

转载 作者:行者123 更新时间:2023-12-02 02:34:41 25 4
gpt4 key购买 nike

我遇到一个问题,在使用 microsoft.aspnet.identity 时无法使用电子邮件地址作为用户名(创建新项目时选择的个人用户帐户 - asp.net 5 的默认 mvc 项目模板)。我在很多地方读到这就是解决方案:

UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) { AllowOnlyAlphanumericUserNames = false };

但是在新版本的asp.net Identity中,UserManager似乎没有一个叫UserValidator的属性。 “UserValidator”已被识别,但我想它现在以不同的方式添加到 UserManager 中。我在 UserManager 上看不到任何相关属性。

编辑:

github 存储库中“Identity”的单元测试针对这种情况进行了测试。目前它是该文件中的最后一个:

https://github.com/aspnet/Identity/blob/dev/test/Microsoft.AspNet.Identity.Test/UserValidatorTest.cs

我想这应该给出答案的线索,但我看不出这会在我的代码中出现。

    [Theory]
[InlineData("test_email@foo.com", true)]
[InlineData("hao", true)]
[InlineData("test123", true)]
[InlineData("!noway", true)]
[InlineData("foo@boz#.com", true)]
public async Task CanAllowNonAlphaNumericUserName(string userName, bool expectSuccess)
{
// Setup
var manager = MockHelpers.TestUserManager(new NoopUserStore());
manager.Options.User.UserNameValidationRegex = null;
var validator = new UserValidator<TestUser>();
var user = new TestUser {UserName = userName};

// Act
var result = await validator.ValidateAsync(manager, user);

// Assert
if (expectSuccess)
{
IdentityResultAssert.IsSuccess(result);
}
else
{
IdentityResultAssert.IsFailure(result);
}
}

最佳答案

在Startup类的ConfigureServices方法中,AddIdentity方法有一个重载,允许配置不同的选项。

// Add Identity services to the services container.
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

将其更改为以下内容允许将电子邮件地址用作用户名。

// Add Identity services to the services container.
services.AddIdentity<ApplicationUser, IdentityRole>(options => { options.User.UserNameValidationRegex = null; })
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

关于asp.net-core - Microsoft.AspNet.Identity vnext 中的 UserValidator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30007205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com