Blazor项目中的自定义身份验证状态提供程序在服务器端无法工作。
创始人
2024-12-22 02:30:26
0

要解决此问题,您需要始终使用异步方法来设置身份验证状态,并且需要使用 Task.FromResult 方法以异步方式返回结果。

以下是一个示例 CustomAuthenticationStateProvider 类,该类实现了 IAuthenticationStateProvider 接口,并在服务器端上工作:

public class CustomAuthenticationStateProvider : AuthenticationStateProvider
{
    private User _user;

    public override async Task GetAuthenticationStateAsync()
    {
        var identity = new ClaimsIdentity();

        if (_user != null)
        {
            identity = new ClaimsIdentity(new[]
            {
                new Claim(ClaimTypes.Name, _user.UserName),
            }, "apiauth_type");
        }

        return await Task.FromResult(new AuthenticationState(new ClaimsPrincipal(identity)));
    }

    public void MarkUserAsAuthenticated(User user)
    {
        _user = user;
        NotifyAuthenticationStateChanged(GetAuthenticationStateAsync());
    }

   public void MarkUserAsLoggedOut()
   {
        _user = null;
        NotifyAuthenticationStateChanged(GetAuthenticationStateAsync());
   }
}

在上面的代码中,GetAuthenticationStateAsync 方法通过检查 User 对象来设置身份验证状态。而 MarkUserAsAuthenticated 和 MarkUserAsLoggedOut 方法分别用来处理用户的“登入”和“登出”操作。

要使用这个 CustomAuthenticationStateProvider,您需要在您的 Blazor 组件中注入这个类:

@inject CustomAuthenticationStateProvider CustomAuthenticationStateProvider

@if (context.User.Identity.IsAuthenticated) 
{
    
}
else
{
    
}

@code {
    private async Task Login()
    {
        var user = new User();
        CustomAuthenticationStateProvider.MarkUserAsAuthenticated(user);
    }

    private async Task Logout()

相关内容

热门资讯

黑科技辅助!微扑克专用辅助器,... 黑科技辅助!微扑克专用辅助器,(微扑克钻石)原来真的有挂,我来教教你(方略)-哔哩哔哩是一款可以让一...
黑科技辅助!wepoke有挂,... 黑科技辅助!wepoke有挂,(WePoKe实现)原来真的有挂,透牌教程(有挂功能)-哔哩哔哩;是一...
黑科技辅助!wepoke有插件... 《黑科技辅助!wepoke有插件,(WePoKe辅助工具)原来真的有挂,安装教程(有挂解惑)-哔哩哔...
黑科技辅助!wepoke辅助使... 黑科技辅助!wepoke辅助使用方法,(Wepoke代码)原来真的有挂,必胜教程(有挂解密)-哔哩哔...
黑科技辅助!wepoke辅助真... 黑科技辅助!wepoke辅助真的假的,(WePoKe步骤)原来真的有挂,2025新版技巧(有挂透视)...
黑科技辅助!wepoke挂真的... 黑科技辅助!wepoke挂真的假的,(Wepoke ai代打)原来真的有挂,新版2025教程(有挂猫...
黑科技辅助!wepoke一定有... 黑科技辅助!wepoke一定有挂,(WePoKe辅助工具)原来真的有挂,介绍教程(有挂方法)-哔哩哔...
黑科技辅助!wepoke黑科技... 黑科技辅助!wepoke黑科技ai,(WePoKe新版)原来真的有挂,规律教程(的确有挂)-哔哩哔哩...
黑科技辅助!红龙扑克辅助工具,... 黑科技辅助!红龙扑克辅助工具,(红龙扑克功能)原来真的有挂,细节方法(细节)-哔哩哔哩;红龙扑克辅助...
黑科技辅助!wepoke辅助真... 【福星临门,好运相随】;黑科技辅助!wepoke辅助真的假的,(WePoKe德州)原来真的有挂,we...