Расширяете ли вы UserManager для управления новыми пользовательскими данными?

UserManager в ASPNET Identity содержит такие функции, как AddPasswordAsync а также SetPhoneNumberAsync,

Я добавил свойства для FirstName и LastName, значения которых не были заданы при регистрации пользователя, поэтому я хочу добавить экраны для управления этими значениями (установка и изменение их).

Как я могу расширить UserManager, чтобы добавить функцию, как AddNamesAsync что будет делать это?

Такая функция становится необходимой, когда мы оцениваем действия 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, чтобы я мог добавить функцию, которая позволит мне обновлять и добавлять значения пользовательских свойств для пользователя?

1 ответ

Первое добавление custom columns в AppliicationUser учебный класс

и тогда вы можете обновить custom columns как это

[HttpPost]
public async Task<ActionResult> SetNames(SetUserFullNamesViewModel model)
{
    ApplicationUser usermodel = UserManager.FindById(user.Id);
    usermodel.Name = model.Name;
    usermodel.Surname = model.Surname;


    IdentityResult result = await UserManager.UpdateAsync(usermodel);
    if (result.Succeeded)
    {
        return RedirectToAction("ListUser", "User");
    }

    return View();
}
Другие вопросы по тегам