我正在尝试创建一个简单的 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 'IdentityUser' 的 DbSet 此类型不包含在上下文模型中
)。
我可以在没有迁移过程的情况下将基于 JWT 的身份验证添加到具有 SQL Server 数据库集成的 ASP.NET Core 2.1 Web API(特别是在 this project 的上下文中)吗?
最佳答案
Can I add JWT-based authentication to an ASP.NET Core 2.1 Web API with SQL Server database integration without the migration procedure (especially in the context of this project)?
是的,你可以。 您不需要仅仅因为处理用户数据而使用 IdentityServer(及其迁移过程)。 您可以完美地创建自己的用户处理实现,如本 link 中的那样。
要添加 SQL Server 集成,请查看链接项目中的 StartUp.cs 类,这一行
services.AddDbContext<DataContext>(x => x.UseInMemoryDatabase("TestDb"));
更改该行并指出您的数据库连接字符串
services.AddDbContext<DataContext>(x => x.UseSqlServer("yourConnectionstring"));
关于c# - ASP.NET Core 2.1 Web API 添加JWT 认证的同时,是否需要像AspNetUsers 这样创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941410/