I am wondering why the current implementation in the ASP MVC, with individual user accounts, uses
AccountController => Login()
var user = await UserManager.FindAsync(model.Email, model.Password);
user manager api
public virtual Task<TUser> FindAsync(string userName, string password);
The login by default asks for a email address and password

Yet is specifically finds the user by the username and not the email address.
By default the username is automatically set to add the users email address as the username in the register form, when you create a new ApplicationUser()
AccountController => Register()
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email};
I however do not want my users usernames to be their email address. I have created custom properties and changed the username field provided by Identity
AccountController => Register() // With custom edits
var user = new ApplicationUser() { UserName = model.UserDetail.UserName, Email = model.Email, UserDetailId = userDetail.UserDetailId };
If I then try login to the site once i have registered, I get an invalid username or password, as shown in the image above. The ViewModel for the login specifies that an email address be added, with a [EmailAddress] attribute . So the code is strict in using an email address, but then finds it by username.
I am thinking of changing the login from FindAsync() to FindByEmailAsync() and then add a string password as a parameter. However I do not want to mess around in the UserManager as I am not sure of the security implications and am not finding much documentation on Identity.
Ideally I would like the user to either login with their email address || username.
I basically just want to know if there are security implications as to why it was created in this manner and if there is a best practice within Identity to change the current behavior so that is looks for the actual email address when logging in?