我使用IdentityServer 3进行身份验证。我使用asp.net身份框架将用户存储在SQL DB中。 IndentityServer团队为管理员提供了简单的IdentityManager.AspNetIdentity库来管理用户。
我按照video here配置了我的应用程序。
我有自己的ApplicationUser
和ApplicationUserManager
课程,如下所示
public class ApplicationUser : Microsoft.AspNet.Identity.EntityFramework.IdentityUser
{
}
public class ApplicationUserManager : Microsoft.AspNet.Identity.UserManager<ApplicationUser, string>
{
public ApplicationUserManager(ApplicationUserStore store, IDataProtectionProvider dataProtectionProvider)
: base(store)
{
// Configure validation logic for usernames
UserValidator = new UserValidator<ApplicationUser>(this)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// Configure validation logic for passwords
PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = true,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
};
// Configure user lockout defaults
UserLockoutEnabledByDefault = true;
DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
MaxFailedAccessAttemptsBeforeLockout = 5;
EmailService = new EmailService();
SmsService = new SmsService();
if (dataProtectionProvider != null)
{
UserTokenProvider =
new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("UserToken"));
}
}
}
当我尝试创建用户时,我收到错误
电子邮件不能为空或空。
我可以通过在RequireUniqueEmail
中将false
设置为ApplicationUserManager
来消除此错误。但这不是我的要求。我希望将RequireUniqueEmail
保留到true
问题
如何在创建新用户页面时显示电子邮件地址字段。请注意,ApplicationUser
派生自已拥有电子邮件属性的IdentityUser
。所以我不确定为什么它没有出现在创建新的用户页面上?
更新1
所以我查看了new user in github的代码,但它是以角度形式开发的。我不熟悉角度语法:(以及如何传递模型进行查看。我不确定在消费者应用程序中我需要做什么才能在新用户屏幕上启用电子邮件字段。
答案 0 :(得分:0)
我部分解决了我的问题
创建用户页面仅显示IndetityUser
的必需属性(在我的情况下,ApplicationUser
派生自IdentityUser
)。 Email
属性在IdentityUser
类中,但是它是虚拟的。所以我可以简单地覆盖ApplicationUser中的属性并添加必需的属性
public class ApplicationUser : IdentityUser
{
[Required]
public override string Email { get; set; }
}
这将根据需要在“创建用户页面”上添加电子邮件字段。但是当我编辑用户时,它会显示两次电子邮件字段(对我来说,暂时没关系,因为此功能仅限于内部)