WebAPI アプリケーションがあり、ユーザーごとに保存する情報に電子メールを追加したいと考えています。多くの例がありますが、それらが現在 Identity 2 で推奨される方法であるかどうかはわかりません。特に、Identity 2 には電子メールを処理するための拡張メソッドがあることに気付きました。
UserManagerExtensions.FindByEmail メソッド
しかし、この拡張方法を使用できるようにするにはどうすればメールを保存できますか? ここに保管する必要がありますか? その場合、クレームとして保管できますか?
public class ApplicationUser : IdentityUser {
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) {
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
// I don't want to add email here
}
ただし、これを行う方法がわかりません:
- 「// ここにカスタム ユーザー クレームを追加する」というメールを上記に追加する必要があります。
以下の登録方法を変更する必要がありますか? その場合、どのように変更すればよいですか?
[AllowAnonymous] [Route("Register")] public async Task<IHttpActionResult> Register(RegisterBindingModel model) { if (!ModelState.IsValid) { return BadRequest(ModelState); } IdentityUser user = new IdentityUser { UserName = model.UserName }; IdentityResult result = await UserManager.CreateAsync(user, model.Password); IHttpActionResult errorResult = GetErrorResult(result); if (errorResult != null) { return errorResult; } return Ok(); }
これを行う方法についてアドバイスをいただければ幸いです。Identity2 アプリケーションのクレームでトークン ベースのアプローチを使用していることに注意してください。可能であれば、ユーザー テーブルに列を追加するだけでなく、クレームでこれを行うことを検討しています。