我试着这样做:
User.Identity.GetUserName()
并且像这样:
User.Identity.Name
但我收到的是电子邮件,而不是UserName
属性。
答案 0 :(得分:1)
您无需在_LoginPartial.cshtml文件中更改内容。而是在AccountController中更改您的注册帖子
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
到此:
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
请记住,如果您已经运行了第一个代码并将试用用户注册到您的数据库中,那么UserName将设置为Email,因此要么从AspNetUser表中删除该条目,要么适当地更新UserName和NormalizedUserName字段。
更新:如此处所述gethub,Entity API会检查针对NormalizedUserName的登录。因此,当您在RegisterViewModel上为用户提供输入非电子邮件的值时,您需要在LoginViewModel中删除[EmailAddress]验证。