如果用户未通过身份验证,Blazor重定向至登录 [英] Blazor redirect to login if user is not authenticated

查看:18
本文介绍了如果用户未通过身份验证,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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆