向 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 的不记名身份验证通过简单的 username
和 password
凭据访问 API,没什么太复杂的。到目前为止,我已经能够创建一个简单的 Core 2.1 Web API 项目,并启用了未经身份验证的 CRUD 操作,但是向它添加 JWT 支持被证明有点问题。
我的数据库有一个名为Users
的表,其中包含用户的个人信息,其中包括username
和password hash
字段。我想将同一张表用于基于 JWT 的身份验证。然而,大多数关于该主题的教程(如this)都使用迁移的概念,它将几个表(例如AspNetUserTokens
和AspNetUserLogins
)添加到我的数据库中,这对我来说似乎毫无用处,因为我不打算这样做使用 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