gpt4 book ai didi

asp.net-mvc - 如何扩展asp.net web api 2 用户?

转载 作者:行者123 更新时间:2023-12-04 22:31:42 24 4
gpt4 key购买 nike

我正在构建一个 Web API (2) 项目并使用 "individual account" authentication
我想要

  • 使用一些详细信息(如名字/姓氏等)扩展用户 (in model)
  • 登录后获取该信息(在客户端 - 我的案例 Windows 手机)

  • 我刚刚开始学习 MVCWeb API,所以有人可以帮助我吗?

    让我稍微解释一下自己:
    我已经创建了 webapi 项目并选择了身份验证方法 - “个人帐户”
    好吧,我添加了一个名为 Person 的模型类,其中包含 2 个字段:FirstName 和 LastName。好吧,我已经使用 fiddler 用密码注册了一个名为“johndoe”的用户。在此之后,我使用 fiddler 在“server:port/Token”上对该用户进行身份验证并获得了不记名 token 。那么这里有一个问题,我需要知道如何在模型中将这个用户类与我的 Person 类相关联,其次我不知道如何编写一个 Controller ,所以什么时候我们的 Controller 函数会发送一个 get 请求将返回关联的 Person。

    最佳答案

    首先,如:Introduction to ASP.NET Identity

    By default, the ASP.NET Identity system stores all the user information in a database. ASP.NET Identity uses Entity Framework Code First to implement all of its persistence mechanism.



    现在,IdentityUser 类将映射到数据库中的 AspNetUsers 表,因此让我们通过创建一个继承自它的新类并添加我们的自定义属性来扩展它:
    public class CustomUser : IdentityUser
    {
    public string Email { get; set; }
    }

    然后你应该让 UserManager 类使用 CustomUser 而不是 IdentityUser 类,所以在 Startup.cs 中,将 UserManager 和 UserStore 的通用类型更改为:
    UserManagerFactory = () => new UserManager<CustomUser>(new UserStore<CustomUser>());

    还有属性(property):
    public static Func<UserManager<CustomUser>> UserManagerFactory { get; set; }

    在 ApplicationOAuthProvider.cs 和解决方案中的任何地方对 UserManager 的通用类型进行相同的更改,并开始使用 CustomUser 而不是 IdentityUser 。
    您可以将新的“电子邮件”属性添加到 RegisterBindingModel 为:
    public class RegisterBindingModel
    {
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [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; }

    public string Email { get; set; }
    }

    然后在注册中你可以增加值(value):
     CustomUser user = new CustomUser
    {
    UserName = model.UserName,
    Email=model.Email
    };

    我希望它会有所帮助

    更新

    如果有人收到 ExceptionMessage“无效的列名‘鉴别器’。”这意味着在按照我的步骤之前已经创建了“AspNetUsers”,并且表没有“鉴别​​器”列,所以你应该做的就是去数据库,通过添加一个新的列来改变AspNetUsers表的设计类型作为 nvarchar(128)(在我的示例中还添加一个您想要的新列,例如 Email ),并将其命名为 Discriminator ,并且不要忘记使用适当的值填充旧记录的此列的字段(在我的例如它将是 CustomUser)。

    关于asp.net-mvc - 如何扩展asp.net web api 2 用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950149/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com