通常、すべてのユーザー登録ロジックはアカウント コントローラーに存在します (これは、インターネット アプリケーション用に提供されたテンプレートの 1 つを使用する場合に当てはまります)。したがって、アカウントが正常に作成されたら、コードを登録メソッドに追加して、ユーザーをユーザー ロールに追加する必要があります。
これは、イベントが存在する場合でも、イベントを監視しようとするよりも簡単で整頓されています。適切に設計されたアプリでは、とにかく、登録コードが 1 か所しかないことに気付くはずです。これにより、Facebook などのソーシャル ネットワーク ログインを使用している場合、OAuth シナリオを処理することもできます。
例: これは、インターネット アプリケーション テンプレート (ローカル サイト登録用) ですぐに使用できる AccountsController で使用する方法です。
[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
... various actions ...
// GET: /Account/Register
[AllowAnonymous]
public ActionResult Register() {
return View();
}
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model) {
if (ModelState.IsValid) {
// Attempt to register the user
try {
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
// ----------------- NEW LINES HERE
Roles.AddUserToRoles(model.UserName, new[] { "Users" });
// ----------------- END NEW LINES
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e) {
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
... more actions ...
}