我正在开发Blazor服务器端应用程序,我需要包括cookie身份验证。我们创建了一个自定义登录页面组件,但是为了创建cookie,我需要调用Razor页面来创建cookie。
有没有一种方法可以调用剃刀页面而无需刷新页面。
我尝试使用UriHelper.NavigateTo,但不适用于非Blazor组件路由。
然后我尝试使用Javascript调用来执行window.location,但是问题是这会导致浏览器刷新,从而重新创建我的所有实例(例如AppState,HttpClient),因此这些实例中的所有信息都是丢失(例如httpclient标头等)。
我希望通过以httpclient和appstate范围内的实例保留其值的方式调用剃刀页面来创建cookie。
答案 0 :(得分:2)
我们尝试了身份支架,但是在最新的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
编译并运行
答案 1 :(得分:0)
我尝试使用UriHelper.NavigateTo,但不适用于非 Blazor组件路由。
不是。 NavigateTo获取两个参数:第一个是uri,第二个是布尔值,名为forceLoad,如果为true,它将绕过客户端路由,并强制浏览器从服务器加载新页面,而无论是否正常处理URI通过客户端路由器。换句话说,它在Blazor的JavaScript部分的 window.location 上执行。
结论:不可能...一旦尝试超出路由器的限制,页面刷新是不可避免的。请记住,Blazor应用程序呈现在单个页面上,因此,一旦导航到新页面,上一个页面就会过期。
希望这对您有帮助...