2017-01-30 21 views
0

UserManager в ASPNET Identity содержит такие функции, как AddPasswordAsync и SetPhoneNumberAsync.Расширение UserManager, позволяющее управлять новыми пользовательскими данными?

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

+0

UserManager призван быть унаследованы. Создайте свой класс, наследуйте UserManager, добавьте все необходимые функции. – trailmax

ответ

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(); 
} 
+0

Существует множество методов, которые я не знаю даже в рамках .net, но, на мой взгляд, практика делает опыт. спасибо –