如果用户未通过身份验证,Blazor重定向至登录 [英] Blazor redirect to login if user is not authenticated
本文介绍了如果用户未通过身份验证,Blazor重定向至登录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用Blazor WebAssembly开发一个应用程序,我想知道如果用户未通过身份验证,我如何保护我的整个应用程序。我要实现的行为是:
- 如果匿名用户请求任何页面,则他将被重定向到登录页面
更好
- 用户必须经过身份验证才能使用此应用
目前,我已实现此行为,将[Authorize]
属性应用于每个页面,但我希望将其集中起来。
我在Blazor服务器端应用_host.razor
组件内的[Authorize]
属性已实现此目标。
Blazor客户端也有解决方案吗?
推荐答案
可能有更巧妙的方法,但以下是对我有效的方法:
假设您已根据these instructions
正确配置了身份验证在您的MainLayout.razor(默认用于所有组件)中添加code
挡路,如下所示:
@code{
[CascadingParameter] protected Task<AuthenticationState> AuthStat { get; set; }
protected async override Task OnInitializedAsync()
{
base.OnInitialized();
var user = (await AuthStat).User;
if(!user.Identity.IsAuthenticated)
{
NavigationManager.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(NavigationManager.Uri)}");
}
}
}
如果用户未通过身份验证,我们将重定向到内置的RemoteAuthenticatorView组件,该组件位于带有"login"操作的"Authentication/"点。这应该会启动身份验证
这篇关于如果用户未通过身份验证,Blazor重定向至登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文