当我在 asp.net mvc 5 中达到类用户身份时,如何获得新属性?

Posted

技术标签:

【中文标题】当我在 asp.net mvc 5 中达到类用户身份时,如何获得新属性?【英文标题】:How to get in it the new attributes, when I reached class User Identity in asp.net mvc 5? 【发布时间】:2015-12-04 09:08:18 【问题描述】:

现在我知道如何通过 Identity 扩展 User 类,现在我需要知道如何在听证会上获取这些项目。在身份模型中

namespace ExtendIdentity.Models

// 您可以通过向 ApplicationUser 类添加更多属性来为用户添加配置文件数据,请访问http://go.microsoft.com/fwlink/?LinkID=317594 了解更多信息。 公共类 ApplicationUser : IdentityUser //Aqui se agregan las propiedades que uno quiere extender para la clase Usuario(paso 1) 公共字符串电子邮件获取;放;

    public string Area  get; set; 



public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

    public ApplicationDbContext()
        : base("DefaultConnection")
    
    

和`公共类RegisterViewModel [必需的] [显示(名称=“用户名”)] 公共字符串用户名 获取;放;

    [Required]
    [StringLength(100, ErrorMessage = "The 0 must be at least 2 characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password  get; set; 

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword  get; set; 


    //Aqui se gragan las propiedades, en el Viewmodel para que la vista los genere(Paso 2)
    [DataType(DataType.EmailAddress,ErrorMessage = "Por favor,entre un email valido")]
    [Required]
    public string Email  get; set; 

    [Required]
    public string Area  get; set; 



和AcountController

[HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model)
    
        if (ModelState.IsValid)
        
            //Se modifica la siguiente linea para que se guarde en la base de datos los elementos nuevos (paso 3)
            // Si existe algun error se debe habilitar las migraciones y migrar
            var user = new ApplicationUser()  UserName = model.UserName , Email = model.Email, Area = model.Area  ;
            var result = await UserManager.CreateAsync(user, model.Password);
            if (result.Succeeded)
            
                await SignInAsync(user, isPersistent: false);
                return RedirectToAction("Index", "Home");
            
            else
            
                AddErrors(result);
            
        

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

我需要在听证会上获得地区和电子邮件,打火机或水

【问题讨论】:

什么?...请把你的问题说清楚一点。 声明是您可能需要的kevin-junghans.blogspot.com/2013/12/… 【参考方案1】:

您可以通过使用 Owin 上下文管理器在任何地方获取用户管理器对象。在用户管理器的帮助下,您可以通过 ID 获取用户对象:

//make sure you added this line in the using section
using Microsoft.AspNet.Identity.Owin

 string myCustomProperty = HttpContext.Current.GetOwinContext()
     .GetUserManager<ApplicationUserManager>()
     .FindById(HttpContext.Current.User.Identity.GetUserId()).CustomPropertyName;

【讨论】:

以上是关于当我在 asp.net mvc 5 中达到类用户身份时,如何获得新属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?

Asp.net MVC 5 视图在使用 F5 重新加载页面之前不呈现

Asp.net MVC 用户管理器更新

ASP.NET MVC 5 解决方案在 VS2013 中有效,但在 VS2015 中无效

ASP.NET MVC 5 - jQuery AJAX 有效,Fetch API 无效

ASP。 NET MVC 5:如果用户是管理员,则返回所有用户的列表