向 ASP.NET Core 2.1 Web API 添加 JWT 身份验证时是不是需要创建像 AspNetUsers 这样的表?

Posted

技术标签:

【中文标题】向 ASP.NET Core 2.1 Web API 添加 JWT 身份验证时是不是需要创建像 AspNetUsers 这样的表?【英文标题】:Is it necessary to create tables like AspNetUsers while adding JWT authentication to ASP.NET Core 2.1 Web API?向 ASP.NET Core 2.1 Web API 添加 JWT 身份验证时是否需要创建像 AspNetUsers 这样的表? 【发布时间】:2019-01-27 05:06:39 【问题描述】:

我正在尝试创建一个简单的 ASP.NET Core 2.1 Web API 来提供来自 SQL Server 数据库的数据。我想使用基于 JWT 的不记名身份验证通过简单的 usernamepassword 凭据访问 API,没什么太复杂的。到目前为止,我已经能够创建一个简单的 Core 2.1 Web API 项目,并启用了未经身份验证的 CRUD 操作,但是向它添加 JWT 支持被证明有点问题。

我的数据库有一个名为Users 的表,其中包含用户的个人信息,其中包括usernamepassword hash 字段。我想将同一张表用于基于 JWT 的身份验证。然而,大多数关于该主题的教程(如this)都使用迁移的概念,它将几个表(例如AspNetUserTokensAspNetUserLogins)添加到我的数据库中,这对我来说似乎毫无用处,因为我不打算这样做使用 Google 或 Facebook 等外部身份验证。甚至表AspNetUsers 也包含看似多余的字段。

我还尝试使用内存数据存储跟踪 this tutorial,但无法实现 SQL Server 集成(面临很多错误,如 Unable to resolve service for type 'Microsoft.AspNetCore.Identity.UserManager'Cannot create a DbSet for 'IdentityUser' this type is not included in the model for the context)。

我可以在没有迁移过程的情况下将基于 JWT 的身份验证添加到具有 SQL Server 数据库集成的 ASP.NET Core 2.1 Web API 吗(尤其是在 this project 的上下文中)?

【问题讨论】:

本指南可能会对您有所帮助:blogs.msdn.microsoft.com/webdev/2016/10/27/…(我目前没有时间提供答案)。 【参考方案1】:

我可以向 ASP.NET Core 2.1 Web API 添加基于 JWT 的身份验证吗? 没有迁移过程的 SQL Server 数据库集成(尤其是在这个项目的上下文中)?

是的,你可以。 您不需要仅仅因为您正在处理用户数据而使用 IdentityServer(这是迁移过程)。 您可以完美地创建自己的用户处理实现作为link中的一个实现@


要添加 SQL Server 集成,请查看链接项目中的 StartUp.cs 类,这一行

services.AddDbContext<DataContext>(x => x.UseInMemoryDatabase("TestDb"));

更改该行并指出您的数据库连接字符串

services.AddDbContext<DataContext>(x => x.UseSqlServer("yourConnectionstring"));

【讨论】:

我使用了同样的方法,然后通过一些小的故障排除让它工作。谢谢。

以上是关于向 ASP.NET Core 2.1 Web API 添加 JWT 身份验证时是不是需要创建像 AspNetUsers 这样的表?的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Core 2.1 Web API 中实现分页

Asp.net core 2.1 Web App 无法在 IIS 上正确呈现

在 ASP.NET Core 2.1 Web 客户端中存储不记名令牌的位置

ASP.NET Core 2.1 MVC - 无法设置从 Web api 响应接收到的 cookie

如何在 asp.net core 2.1 中使用 net.tcp 服务

如何使用 fetch 将 FormData 从 javascript 发送到 ASP.NET Core 2.1 Web API