微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET Boilerplate 多项服务

如何解决ASP.NET Boilerplate 多项服务

早上好,

我试图了解扩展 ASP.Net Boilerplate 的正确方法,以创建多个使用相同身份验证和授权(例如 JWT)和底层框架的 Web 服务。

例如,我想构建主 Web API 以在 /api/webapp1 上具有起始端点 在/api/webapp2 上启动的第二个服务 在/api/webapp3 上启动的第三个服务 在 /api/webapp4 上启动的第四个服务 - 也许这需要在 .Net 标准而不是核心上运行?

我不想构建一个单一的 Web 应用程序,因为我可能希望我的一个或某些 Web 服务在 Windows 上运行,因为它可能具有依赖性,而代码库的其余部分可以在 Linux 等上运行。

搭建应用程序和项目的最佳方式是什么?我正在尝试尽量减少代码重复(DRY)。我目前的想法是复制 web.host 项目,但我是否应该创建一个单独的 Web 服务来完全管理身份验证?

解决方法

创建四个 .NET 5.0 WebApis,您可以在 Linux 和 Windows 上运行它们。当涉及到身份验证时,假设您使用的是 Open Id Connect,那么在每个服务中实现基本的 JWT 真的很容易,实际上只有六行。

services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(o =>
    {
        o.Authority = "https://localhost:5001";
    });

您只是通过设置授权将身份验证中间件指向您的 Open Id Connect 服务器,仅此而已。它将为您验证令牌并填充 ClaimsPrincipal。 .NET 5.0 和 .NET Core 充满了如此简单的横切关注点配置,这就是为什么我说您可以轻松地将您的应用程序拆分为四个 API 并且仍然符合 DRY。为共享内容添加一个额外的项目也是一个好主意,但不要添加太多,这样整个系统就不会降级为伪装分布式系统的单体。

我是否应该创建一个单独的 Web 服务来完全管理身份验证?

这是一个好主意,我会更进一步,建议不要自己做登录逻辑、存储密码等,而是使用一些现有的解决方案来实现 Open Id Connect,如 IdentityServer4 或 KeyCloack。

如果您想将所有这些应用程序放在同一地址下,例如/api 路由。您可以使用 Ocelot 作为 API 网关。

顺便说一句,您不能在 .netstandard 上运行您的 API,它必须是 Framework、Core 或 5.0。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?