以下のコードは、現在の認証ユーザーをAdmin
という名前のロールに割り当てるために呼び出されます。ユーザーは既に正しく構成された電子メールアドレスで作成されており、その電子メールアドレスで認証することができます。ただし、以下のデモコードを使用してユーザーをロールに追加したいとします。ユーザー名が電子メールアドレスのユーザーにユーザーを追加する
public ActionResult AddUserToRole()
{
var userId = User.Identity.GetUserId();
using (var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
{
IdentityResult result = userManager.AddToRole(userId, "Admin");
}
return RedirectToAction("Index");
}
ユーザーは、新しいMVC 5アプリケーションのテンプレートコードを使用して作成されました。テンプレートコードは、ユーザー名の電子メールアドレスを要求します。しかし、AddToRole
ラインの結果が
ユーザー名[email protected]のエラーで
result.Succeeded = false
を返すことは無効である、文字や 数字のみを含めることができます。
なぜroleの呼び出しでバリデータが適用されますが、ユーザーを作成する呼び出しには影響しません。それはすべてテンプレートコードです。
これはすべてテンプレートコードであるため、何か不足しているか、テンプレートを変更してユーザーに電子メールアドレスではないユーザー名を指定させる必要がありますか?
多くのありがとうございます。
あなたのコンテキストまたはデータベースは、ユーザー名プロパティにドットおよび/または「@」記号を許可しないように構成されているようです。 – DevilSuichiro
重複http://stackoverflow.com/questions/19460078/configure-microsoft-aspnet-identity-to-allow-email-address-as-username –
ユーザー名は電子メールとして完全に設定されています。役割にユーザーを追加するだけで問題が発生しました。 –