Asp.net core mvc 如何在验证用户时验证任意条件?
假设我有一个ASP.NET MVC核心应用程序,我想在允许身份验证时验证某些自定义条件。例如,提供一对有效凭据但被应用程序管理员禁用的用户,或指示该用户付款最新的标志,或任何其他任意条件。ASP.NET Core Identity中是否有可以挂接此自定义验证的位置?我必须为本地和外部身份验证工作。对于您的情况,您可以创建自定义用户验证程序 为ASP.NET核心标识编写自定义验证程序 要求电子邮件地址以@example.com结尾的自定义用户验证程序 这遵循Identity中的一种常见模式,您可以实现接口(在本例中为Asp.net core mvc 如何在验证用户时验证任意条件?,asp.net-core-mvc,asp.net-core-identity,Asp.net Core Mvc,Asp.net Core Identity,假设我有一个ASP.NET MVC核心应用程序,我想在允许身份验证时验证某些自定义条件。例如,提供一对有效凭据但被应用程序管理员禁用的用户,或指示该用户付款最新的标志,或任何其他任意条件。ASP.NET Core Identity中是否有可以挂接此自定义验证的位置?我必须为本地和外部身份验证工作。对于您的情况,您可以创建自定义用户验证程序 为ASP.NET核心标识编写自定义验证程序 要求电子邮件地址以@example.com结尾的自定义用户验证程序 这遵循Identity中的一种常见模式,您可以
IValidator
)并提供所有验证代码,或者覆盖它的基本实现并通过覆盖方法添加其他逻辑,就像我在这里做的那样
public class CustomUserValidator : UserValidator<ApplicationUser>
{
public override async Task<IdentityResult> ValidateAsync(UserManager<ApplicationUser> manager,
ApplicationUser user)
{
IdentityResult baseResult = await base.ValidateAsync(manager, user);
List<IdentityError> errors = new List<IdentityError>(baseResult.Errors);
if (!user.Email.EndsWith("@example.com"))
{
IdentityError invalidEmailError = Describer.InvalidEmail(user.Email);
invalidEmailError.Description += " Email address must end with @example.com";
errors.Add(invalidEmailError);
}
return errors.Count > 0 ? IdentityResult.Failed(errors.ToArray()) : IdentityResult.Success;
}
}
这将把
CustomUserValidator
的实现添加到内部服务集合中,允许在需要IUserValidator
的任何地方注入它。Hi,@Léster,如果您有关于此问题的最新信息,请通知我们。
services.AddTransient<IUserValidator<ApplicationUser>, CustomUserValidator>();