メールアドレスの代わりにユーザー名を使用するようにログインを設定する必要があります。どうすれば変更できますか?
実際にはユーザー名として電子メールアドレスを使用しているため、ASPNetUsersテーブルでは、ユーザー名と電子メールフィールドの両方が電子メールアドレスと共に表示されます。
AccountControllerに移動し、Registerメソッド(POST)を探します。
これを変える:
var user = new ApplicationUser { UserName = model.Email, Email = model.Email};
これに:
var user = new ApplicationUser
{
UserName = model.UserName,
Email = model.Email
};
次に、Login.cshtmlに移動して、対応するすべての電子メールモデルフィールドをユーザー名に変更します。
最後に、AccountControllerのLoginメソッド(POST)に進み、model.Emailをmodel.UserNameに変更します。
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password,
model.RememberMe, shouldLockout: false);
また、新しいUserNameプロパティを導入するには、AccountViewModels.csを変更する必要があります。
これがあなたのやり方です
var user = await _userManager.Users
.FirstOrDefaultAsync(u => u.UserName == username || u.Email == username);
if (user != null){
var result = await _signInManager
.PasswordSignInAsync(/*email*/user.Email, password, false, false);
/*removed for brevity*/
}
ユーザー名がusername = test
およびemail = [email protected]
であると考えている場合、myemail @ ...の代わりにtestを使用してユーザーの認証を許可します。
PS。 @Jasonからの回答は機能しますが、メールを使用せずに実際のユーザー名とパスワードでユーザーを認証したい場合があります。
この場合、私の答えを使用してください