在 ASP.NET MVC 5 預設專案範本中透過 ASP.NET Identity 由 Email 改用 Username 登入

ASP.NET MVC 5 使用新的會員系統 - ASP.NET Identity,預設的專案範本,幫我們建立了基本的會員系統,就是以ASP.NET Identity,其中註冊登入都是以 E-mail 為帳號,剛好專案的使用者希望用簡單的帳號(不想每次都打 email),就來看看要修改哪些地方吧

一、預設專案範本

  • 建立專案–> 預設 MVC 專案範本 create

    defaulttemplate

  • 註冊

    registerwithemail

  • 登入

    loginwithemail

二、開始修改

1. 註冊

  • 1-1. 註冊畫面

    Views/Account/Register.cshtml

    registercshtml

    • 將 Email 改為 Username

      ![registercshtml2](https://trello-attachments.s3.amazonaws.com/5835ab9d70f36ddbf5f15558/1200x521/fc8f334b189d7019b57b9f857a776850/_output_registercshtml2.png)
      
  • 1-2. 註冊 Model

    • Models/AccountViewModel.cs 的 RegisterViewModel

      registermodel

      ![registerdone](https://trello-attachments.s3.amazonaws.com/5835ab9d70f36ddbf5f15558/1200x390/fba91740adeb3b1f24899a0c86ed1da7/_output_registerdone.png)
      
    • Email –> Username

    • Display(Name="Email") –> Display(Name="Username")

    • 移除 [EmailAddress]

      沒有移除[EmailAddress] 出現的錯誤

      emialattibute

  • 1-3. 註冊功能

    Contrllers/AccountController.cs 的 Register 方法

    register

    REGISTERCHANGE

    REGISTERCHANGEDONE

    • Username = model.Email 改為 Username = model.Username

      由此可知,其實本來就有 Username 這個欄位,只是預設用 email 取代了

    • ,Email = model.Email 刪除

  • 1-4. Identity 設定

    App_Start/IdentityConfig.cs 的 ApplicationUserManager 屬性

    • RequireUniqueEmail = true –> RequireUniqueEmail = false indentitychanged
    • 未修改時會出現錯誤 needemail

2. 登入

login

  • 2-1. 登入畫面

    Views/Login.cshtml

    logincshtml

    • Email –> Username

      logincshtmldone

  • 2-2. 修改 登入 Model

    Models/AccountViewModel.cs 的 LoginViewModel 類別

    loginviewmodel

    loginviewmodeldone

    • Email –> Username
    • Display(Name="Email") –> Display(Name="Username")
    • 移除 [EmailAddress]
  • 2-3. 登入功能

    Contrllers/AccountController.cs 的 login 方法

    loginfunction

    • model.Email –> model.Username

      loginfunctiondone

完成修改

1. 註冊

register1

2. 登入

2login

心得

登入的帳號從 Email 改為 Username ,改動範圍並不大,也沒什麼機會瞭解到 ASP.NET Identity,接下來再找時間來做一些測試修改,好好瞭解 ASP.NET Identity