首页 > 解决方案 > Identity Server 脚手架和 Blazor WebAssembly

问题描述

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

我期待有一个单独的纯 Web api,其中带有 identityserver api 和 Blazor 来处理页面/视图和 api 调用。是否可以将这些 cshtml 移动到 Blazor 并从那里管理页面,或者脚手架已经这样做了,因为不是吗?

标签: asp.net-coreblazorblazor-webassembly

解决方案


不,您不能将这些 Razor Pages 页面移动到前端 Blazor。但是您可以通过这样的方式来设计它们,从而产生这样一种印象,例如,当用户被重定向到登录页面时,登录 Razor 页面页面是 Blazor 前端的一部分。我已经看到了一个例子,并且必须承认我没有看到源代码就无法辨别它。

在 Blazor 服务器项目中拥有一个专用的 Web Api 项目或拥有 Web Api 端点与身份 UI 不是 Blazor 前端的一部分无关。

我期待有一个单独的纯 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 的空间......


推荐阅读