2015-11-18 188 views
1

在ASP.NET MVC 5中,默認情況下,登錄和註冊設置附帶電子郵件和密碼。我想改爲使用用戶名和密碼。這裏發佈了一些類似的病例,但是跟着他們並沒有幫助。當我嘗試註冊時,出現錯誤消息「電子郵件不能爲空」。看起來電子郵件的設置仍然有效,不知道在哪裏。改變我對用戶的用戶名,而不是電子郵件做出如下:更改用戶從電子郵件登錄到用戶名

AccountViewModel

//Removed Email and added username for RegisterViewModel 

public class RegisterViewModel 
    { 
     [Required] 
     [Display(Name = "User name")] 
     public string Username { get; set; } 
} 

的AccountController改變電子郵件的用戶名在註冊

public async Task<ActionResult> Register(RegisterViewModel model) 
{ 
    if (ModelState.IsValid) 
    { //changed email to username 
     var user = new ApplicationUser { UserName = model.Username}; 
     //var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; 
     var result = await UserManager.CreateAsync(user, model.Password); 
     if (result.Succeeded) 
     { 
      await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);      
      return RedirectToAction("Index", "Home"); 
     } 
     AddErrors(result); 
    } 

Register.cshtml

<div class="form-group"> 
    @Html.LabelFor(m => m.Username, new { @class = "col-md-2 control-label" }) 
    <div class="col-md-10"> 
     @Html.TextBoxFor(m => m.Username, new { @class = "form-control" }) 
    </div> 
</div> 

在瞭解我失蹤的步驟後,我會做同樣的登錄。

+0

跟蹤它在調試器中看到的假設錯誤來自哪裏。驗證通常至少有3個層次(例如View,Model,Entity)。 –

+0

我對已更改的文件使用了斷點。什麼都沒有出現。 IT不是一個例外,而是顯示一個字符串,因此異常被捕獲到某處。確切的字符串是「電子郵件不能爲空或空」。試圖使用find進行搜索,該字符串不會顯示在公共文件上。我猜我得按檔案去檔案。 – kar

+0

UserManager仍然在尋找一封電子郵件,因爲您評論它是有道理的。要求電子郵件註冊但不能登錄。 –

回答

0

這是一個猜測,所以請親切。

在您的啓動中,您配置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.RequireUniqueEmail = false; }) 
    .AddEntityFrameworkStores<ApplicationDbContext>() 
    .AddDefaultTokenProviders(); 

這是基於使用EF和https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNet.Identity/UserValidator.cs#L55

+0

這個文件在哪裏?你提到啓動在App_Start/Startup.Auth.cs? – kar

相關問題