Blazor Wasm 身份登录/注销事件

Posted

技术标签:

【中文标题】Blazor Wasm 身份登录/注销事件【英文标题】:Blazor Wasm Identity Login/Logout event 【发布时间】:2021-06-08 15:06:54 【问题描述】:

在使用来自 Wasm 模板的标准身份的 .Net 5 Blazor WASM 应用程序中,我想在用户登录(或注销)时执行一些操作。我已经在 Authentication.razor 中尝试过 RemoteAuthenticatorView:

@page "/authentication/action"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
<RemoteAuthenticatorView Action="@Action" 
                         OnLogInSucceeded="OnLoginSucceeded"
                         OnLogOutSucceeded="OnLogoutSucceeded1"
                         />


@code
    [Parameter] public string Action  get; set; 



    public async void OnLoginSucceeded()
    
        // do something
    

    public void OnLogoutSucceeded1()
    
        // do something
    


而且,我尝试了一个组件(我真的想采取行动来合并一个购物篮):

AuthenticationStateProvider.AuthenticationStateChanged += OnAuthenticationStateChanged;


 private async void OnAuthenticationStateChanged(Task<AuthenticationState> task)
    
        var user = (await task).User;
        Console.WriteLine(DateTime.Now.ToString("hh:mm:ss:fff") + " InitialDataLoader -> OnAuthenticationStateChanged -> IsUserAuthenticated: " + user.Identity.IsAuthenticated);

    

我在每个方法中都有断点,在我最终在 RemoteAuthenticatorView 和我的组件中都命中了登录断点之后(它有一段时间没有中断),它现在只中断一次。如果我注销 - 没有注销事件。如果我再次登录,即使作为另一个用户,我也不会遇到断点。

是否有一致的方法来生成或检测登录?

【问题讨论】:

【参考方案1】:

结果它工作正常,只是断点不工作 - 不知道为什么不工作。我向每个事件添加了 Console.WriteLine 消息,并且所有事件都被正确命中。所以这两种技术都按预期工作。

【讨论】:

在初始化结束之前,断点在 Blazor 中不起作用...

以上是关于Blazor Wasm 身份登录/注销事件的主要内容,如果未能解决你的问题,请参考以下文章

Blazor Wasm 身份验证

升级到 .net 6 时托管的 Blazor WASM 身份验证中断

如何在 Blazor WASM 中对当前经过身份验证的用户帐户信息执行 CRUD 操作?

使用 Blazor wasm Bearer Token 进行 SignalR 身份验证

未注册身份验证 AuthenticationStateProvider 的 Blazor Wasm 托管预渲染

IdentityServerBuilderConfigurationExtension 中的 Blazor WASM 托管身份验证空引用异常