Blazor 隐藏组件,直到它';s的身份验证已完成
在Blazor服务器应用程序中,我们通过在表中存储用户详细信息来使用简单的SQL Server数据库身份验证。申请的第一个途径是“https://localhost:44349/login“ 我们提供了邮件地址和密码作为凭证,它将导航到“https://localhost:44349/valuation“ 在那之前一切都好。我们在会话中存储用户详细信息Blazor 隐藏组件,直到它';s的身份验证已完成,blazor,blazor-server-side,Blazor,Blazor Server Side,在Blazor服务器应用程序中,我们通过在表中存储用户详细信息来使用简单的SQL Server数据库身份验证。申请的第一个途径是“https://localhost:44349/login“ 我们提供了邮件地址和密码作为凭证,它将导航到“https://localhost:44349/valuation“ 在那之前一切都好。我们在会话中存储用户详细信息 await sessionStorage.SetItemAsync("email", result.
await sessionStorage.SetItemAsync("email", result.Email);
await sessionStorage.SetItemAsync("role", result.TipoUtilizador);
await sessionStorage.SetItemAsync("Name", result.Nome);
UriHelper.NavigateTo("valuation");
如果我们打开一个新选项卡,并直接复制“https://localhost:44349/valuation“,有一个问题需要解决
将链接复制到新选项卡“https://localhost:44349/valuation"
我们在“OnInitializedAsync”meyhod中检查会话存储值
现在,并没有匹配的sessionstorage值,它将导航回登录页面
但问题是,我们可以在UI元素导航到登录页面之前看到它
var email = await sessionStorage.GetItemAsync<string>("email");
if (string.IsNullOrEmpty(email))
{
var returnUrl = Navigation.ToBaseRelativePath(Navigation.Uri);
var destination = string.IsNullOrWhiteSpace(returnUrl) ? "/login" : $"/login?returnUrl={returnUrl}";
Navigation.NavigateTo(destination, true);
}
var email=wait sessionStorage.GetItemAsync(“电子邮件”);
if(string.IsNullOrEmpty(电子邮件))
{
var returnUrl=Navigation.ToBaseRelativePath(Navigation.Uri);
var destination=string.IsNullOrWhiteSpace(returnUrl)?“/login”:$“/login?returnUrl={returnUrl}”;
Navigation.NavigateTo(目的地,true);
}
此h1标记来自估价组件,它在导航到登录页面之前显示。(在实际情况中,我们有很多HTML控件,如按钮、选择等,我们希望隐藏这些控件)
我检查了blazor文档,发现OnInitializedAsync是在组件包含在渲染树中并准备接受数据之后调用的
请帮助我解决此简单身份验证的问题。在用户通过
元素身份验证之前,包装您不希望看到的元素