我正在使用 Blazor 身份驗證,并搭建了登錄頁面的腳手架。當用戶未通過身份驗證時,我希望在布局頁面上重定向到它,但不幸的是它不起作用。
這是我的代碼:
[Inject] private NavigationManager nav { get; set; }
protected override async Task OnInitializedAsync()
{
var authState = await auth.GetAuthenticationStateAsync();
var user = authState.User;
if (!user.Identity.IsAuthenticated)
{
nav.NavigateTo("/Identity/Account/Login");
}
}
實際發生的是 Blazor 認為該頁面不存在并呈現 NotFound: <p>Sorry, there's nothing at this address.</p>.
那說; 不做任何其他事情,當我重繪 頁面時,它實際上打開了登錄頁面。這對我來說沒有意義。
任何人都可以幫助我了解這里發生的事情。
問候,
克里斯
uj5u.com熱心網友回復:
這行代碼: nav.NavigateTo("/Identity/Account/Login");
應該: nav.NavigateTo("/Identity/Account/Login", true);
注意:url"/Identity/Account/Login"不在 Blazor 應用程式的 SPA 空間內,這就是 Blazor 路由器找不到它的原因。
當您添加值為 的第二個引數時true,您向 Blazor 指示您要導航到應用程式的空間邊界之外,例如:
nav.NavigateTo("https://github.com/dotnet/aspnetcore", true);
如果對你有幫助,請采納這個答案...
uj5u.com熱心網友回復:
您應該使用授權頁面屬性。如果將其添加到頁面,blazor 框架將重定向到登錄頁面。
它是 Blazor WASM 應用程式嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/364314.html
上一篇:如何計算方法中的變異資料?
