身份服务器脚手架和 Blazor WebAssembly

时间:2021-01-04 23:43:05

标签: asp.net-core blazor blazor-webassembly

我有一个托管的 Blazor WebAssembly 应用程序,我尝试在 App.Server 项目中搭建身份服务器。它正在工作,但现在我在 App.Server 中混合了 cshtml 视图文件(它只是一个 asp net core web api)。我发现很难集成 Blazor UI 和 cshtml 文件以获得良好的用户体验。

我期待有一个单独的纯网络 api,带有身份服务器 api 和 Blazor 负责页面/视图和 api 调用。是否可以将这些 cshtml 移动到 Blazor 并从那里管理页面,或者脚手架已经这样做了,因为不是?

1 个答案:

答案 0 :(得分:0)

不,您不能将这些 Razor Pages 页面移动到前端 Blazor。但是,您可以将它们设计成这样一种印象,例如,当用户被重定向到登录页面时,登录 Razor 页面页面是 Blazor 前端的一部分。我见过这样的例子,必须承认,如果没有看到源代码,我是无法辨别的。

在 Blazor 服务器项目中拥有专用的 Web Api 项目或 Web Api 端点与不属于 Blazor 前端的身份 UI 无关。

<块引用>

我希望有一个单独的纯 Web api,其中包含 identityserver api 和 Blazor 来处理页面/视图和 api 调用。

您可以创建一个 Blazor WebAssembly 独立项目,添加一个 Web Api 项目和一个 IdentityServer4 项目,在这种情况下,OpenID Connect 的流程是这样的,您想要登录的用户被重定向到由项目的默认模板,但您仍然可以将页面设计为看起来好像它们是 Blazor 前端的一部分。

唯一可以满足您的想法的可行解决方案是使用承载身份验证;那就是您的 Web Api 为用户生成 Jwt 令牌,这些令牌被传递到您的前端,并存储在本地或会话存储中。在这种情况下,您的登录页面可以是一个 Razor 组件,它从用户那里收集凭据,并通过 Fecth API(这是 Blazor 中的 HttpClient 服务)将它们传递给 Web Api 适当的端点......这是我们的方法在 Blazor 团队创建 Blazor 的当前身份验证系统之前采用。我个人不建议这样做,除非他精通 Blazor 和其他领域,并且他已准备好投入大量时间来开发它。我猜你的解决方案应该是欺骗:让用户认为他从未离开过Blazor SPA的空间......