c# - ASP.NET Core 2.1 Web API 添加JWT 认证的同时,是否需要像AspNetUsers 这样创建表?

标签 c# asp.net asp.net-core jwt asp.net-core-2.1

我正在尝试创建一个简单的 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 '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/

相关文章:

javascript - 如何在文本区域显示来自服务器的数据

c# - 在使用浮点运算的多人 RTS 游戏中保持同步

c# - 如何创建proto文件来获取字节数组?

c# - 如何在 ASP.NET 5 (vNext) 中设置 SignalR Hub 依赖注入(inject)?

c# - C#中通过反射获取接口(interface)的基接口(interface)

c# - 在 Visual Studio C# 中设置 cpu 架构类型的重要性

asp.net - 浏览IIS网站时出现 "Service Unavailable"错误

javascript - JQuery ajax调用跨域webservice

asp.net - 从 URL 中删除尾部斜杠

c# - 如何将连接字符串从startup.cs asp.net core传递到UnitOfWork项目