[英]Exclude email from IdentityUser in Asp Net MVC
我有一个带有身份验证的 asp.net MVC 项目。 默认实现使用 email 地址来注册用户或让他们登录,但在我的项目中我不需要他们的 email 地址并且我想使用简单的字符串用户名,因此我在我的 OnModelCreating 方法中包含以下代码以排除 email地址和一些我不需要的其他功能:
modelBuilder.Entity<ApplicationUser>().Ignore(p => p.AccessFailedCount).
Ignore(p => p.Email).Ignore(p => p.EmailConfirmed).Ignore(p => p.LockoutEnabled).
Ignore(p => p.LockoutEndDateUtc).Ignore(p => p.PhoneNumber).
Ignore(p => p.PhoneNumberConfirmed).Ignore(p => p.TwoFactorEnabled);
我已经更改了 LoginViewModel 和 Login.cshtml,并将 email 地址字段替换为用户名,但是当我尝试登录时,在以下行的登录操作中引发异常:
var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password,
model.RememberMe, shouldLockout: false);
错误页面说:
属性“Email”不是“ApplicationUser”类型的声明属性。 使用 Ignore 方法或 NotMappedAttribute 数据批注验证该属性是否未从 model 中明确排除。 确保它是一个有效的原始属性。
问题是我怎样才能完全排除email?
您不需要在OnModelCreating方法中进行更改。 您需要做的就是在 ViewModel 和 Login & Register 方法中进行一些更改。
同样,您必须为RegisterViewModel 、 Register方法和视图添加用户名字段,以允许用户在注册时输入用户名。
您不需要显式忽略 OnModelCreating 方法中的 Email 字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.