3

ASPNET Identity の UserManager には、AddPasswordAsyncや などの機能が含まれていますSetPhoneNumberAsync

ユーザー登録時に値が設定されていなかった FirstName と LastName のプロパティを追加したので、これらの値を管理するための画面を追加します (設定と変更)。

AddNamesAsyncUserManager を拡張して、これを行うような関数を追加するにはどうすればよいですか?

このような関数は、次のように ManageController アクションを評価するときに必要になります。

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> SetPassword(SetPasswordViewModel model)
{
    if (ModelState.IsValid)
    {
        var result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword);
        if (result.Succeeded)
        {
            var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
            if (user != null)
            {
                await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
            }
            return RedirectToAction("Index", new { Message = ManageMessageId.SetPasswordSuccess });
        }
        AddErrors(result);
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}

同じロジックに沿って、次のようにコントローラーに関数を追加したいと思います。

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> SetNames(SetUserFullNamesViewModel model)
{
    if (ModelState.IsValid)
    {
        var result = await UserManager.AddNamesAsync(User.Identity.GetUserId(), model.FirstName, model.LastName);
        if (result.Succeeded)
        {
            var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

            return RedirectToAction("Index", new { Message = ManageMessageId.SetNamesSuccess });
        }
        AddErrors(result);
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}

UserManager に関数を追加したり、UserManager を拡張して、ユーザーのカスタム プロパティ値を更新および更新できるようにする関数を追加するにはどうすればよいですか?

4

1 に答える 1