I have wired up my application to use ASP.NET Identity in an ASP.NET MVC environment, and it works great. I love it. But I have an issue with the field it uses;
Specifically, the login method.
    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    [Route("account/login")]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) {
        if (ModelState.IsValid) {
            var user = await UserService.FindAsync(model.UserName, model.Password);
            if (user != null) {
                await SignInAsync(user, model.RememberMe);
                return RedirectToLocal(returnUrl);
            }
            else {
                ModelState.AddModelError("", "Invalid username or password.");
            }
        }
        // If we got this far, something failed, redisplay form
        return View(model);
    }
    private async Task SignInAsync(Member user, bool isPersistent) {
        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        var identity = await UserService.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
        AuthenticationManager.SignIn(
            new AuthenticationProperties() {
                IsPersistent = isPersistent
            },
            identity);
    }
This creates an authentication ticket using the UserName field of the Member class that is coded against the IUser system. Now, that does work, but I want it to use the Email field. 
The reason is because I use User.Identity.Name for some things, and I really want it to equal the value in the Email field.
Unfortunately, there is no Email field on IUser. I'm having a hard time figuring out how to do this. Right now, I am doing it by setting UserName to always get or set the Email field, like this.
public class Member : IUser {
   // ...
   public string Email { get; set; }
   public string UserName { get { return Email; } set { Email = value; } }
   // ...
}
but that's a very 'hacky' way to do it, I'd like to learn a cleaner method.
 
    