首页 > 解决方案 > 如何从服务器端 Blazor 应用程序中的 Blazor 组件调用 razor 页面而不导致页面刷新

问题描述

我正在开发一个需要包含 cookie 身份验证的 Blazor 服务器端应用程序。我们创建了一个自定义登录页面组件,但为了创建 cookie,我需要调用 Razor 页面来创建 cookie。

有没有办法在不刷新页面的情况下调用剃须刀页面。

我尝试使用 UriHelper.NavigateTo 但不适用于非 Blazor 组件路由。

然后我尝试使用 Javascript 调用来执行 window.location,但问题是这会导致浏览器刷新,从而重新创建我的所有实例(如 AppState、HttpClient),因此这些实例中的所有信息都会丢失(如httpclient 标头等)。

我希望调用 razor 页面来创建一个 cookie,以使 httpclient 和 appstate 范围内的实例保持它们的值。

标签: authenticationrazorcookiesblazor

解决方案


我们尝试了 Identity 脚手架,但它在最新的 Preview 8 中有一个错误

我已经看到了那个错误,很容易纠正。你现在可以脚手架了。否则,

我们唯一的问题是我们找不到自定义平淡无奇的登录和注册页面的方法。

也许你可以忍受那些“平淡无奇的页面”,直到 9 月底发布?


这些步骤基于具有“个人用户帐户”的 Preview8 服务器端项目

注意:在此之前和之后在 Git 中提交更改是个好主意

  • 在启动中暂时禁用此行:// endpoints.MapBlazorHub<App>(selector: "app");
  • 运行脚手架向导,添加您想要的任何页面
  • 再次取消注释该endpoints.MapBlazorHub()
  • 消除Pages/_ViewStart.cshtml
  • 修复Pages/Shared/_Layout.cshtml,第一行缺少一个@using
  • 修复Pages/Shared/_Loginpartial.cshtml,第二行不见了@inject

编译并运行


推荐阅读