如何扩展asp.net Web API 2用户?

塞尔吉·科乔卡鲁(Sergiu Cojocaru)

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

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

我刚刚开始学习MVCWeb API因此有人可以帮我吗?

让我自己解释一下:我已经创建了webapi项目并选择了作为身份验证方法-“单个帐户”。我添加了一个名为Person的模型类,其中包含2个字段:FirstName和LastName。好吧,我已经用提琴手为一个名为“ johndoe”的用户注册了密码。之后,我使用了提琴手在“ server:port / Token”上对该用户进行身份验证并获得了承载令牌。好了,这是一个问题,我需要知道如何在模型中将此用户类与我的Person类关联,其次我不知道如何编写控制器,因此何时发送get请求,我们的控制器函数将返回关联的Person。

亚瑟·辛加布(Yasser Sinjab)

首先,如:ASP.NET身份简介

默认情况下,ASP.NET Identity系统将所有用户信息存储在数据库中。ASP.NET Identity使用Entity Framework Code First来实现其所有持久性机制。

现在,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>());

还有财产:

public static Func<UserManager<CustomUser>> UserManagerFactory { get; set; }

在ApplicationOAuthProvider.cs和解决方案中的任何位置,对UserManager的通用类型进行相同的更改,然后开始使用CustomUser而不是IdentityUser。您可以将新的“ Email”属性添加到R​​egisterBindingModel中,如下所示:

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

然后,您可以在注册中增加价值:

 CustomUser user = new CustomUser
        {
            UserName = model.UserName,
            Email=model.Email
        };

希望对您有所帮助

更新

如果有人收到ExceptionMessage“无效的列名'Discriminator'。” 这意味着在执行我的步骤之前已经创建了“ AspNetUsers”,并且该表没有“ Discriminator”列,因此您要做的就是进入数据库,通过添加一个新的类型为type的字段来更改AspNetUsers表的设计作为nvarchar(128)(也要添加一个新列,例如我的示例中的Email),并将其命名为Discriminator,并且不要忘记为该列的字段填充具有适当值的旧记录(在我的例如CustomUser)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检索 Facebook 用户信息 ASP.NET WEB API 2

来自分类Dev

如何保护ASP.NET Web API 2

来自分类Dev

ASP.NET Web API 2-如何过帐?

来自分类Dev

Asp.Net Web Api 2-如何使用身份模型使用JWT访问令牌和用户声明

来自分类Dev

ASP.NET Web API 2-用户注册电子邮件确认失败

来自分类Dev

ASP.NET Web API 2-用户注册电子邮件确认失败

来自分类Dev

Asp.Net Web API跨层传递用户

来自分类Dev

如何在ASP.NET Web API 2中使用log4net布局模式有条件地捕获用户名?

来自分类Dev

ASP.NET(OWIN)身份:如何从Web API控制器获取用户ID?

来自分类Dev

如何在OData asp.net Web API中创建注册用户操作

来自分类Dev

在ASP.Net Web API控制器中如何查找用户名?

来自分类Dev

如何在OData asp.net Web API中创建注册用户操作

来自分类Dev

如何从Asp.Net Web Api 2获得类似于Google API响应的JSON结果?

来自分类Dev

缓存Asp .Net Web API

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

获取当前ASP.NET Web Api 2操作的URL

来自分类Dev

ASP.net Web API 2自定义方法

来自分类Dev

ASP.NET Web api2模拟webClient调用

来自分类Dev

asp.net core 2 Web API超时问题

来自分类Dev

找不到ASP.NET Web API 2属性路由

来自分类Dev

asp.net Web api 2和jquery帖子

来自分类Dev

Asp.Net Web Api 2奇怪的路由行为

来自分类Dev

ASP.NET WEB API 2安全建议

来自分类Dev

Angular2调用ASP.NET Web API

来自分类Dev

ASP.NET WEB API 2中的复杂对象

来自分类Dev

ASP.NET Web Api 2路由

来自分类Dev

ASP.NET Web API 2自何时起可用?

来自分类Dev

ASP.NET Web API 2 操作 DELETE 与 guid