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)好像是有挂,爆料教程(有挂攻略)是一款可以让...
黑科技讲解(wpk俱乐部)外挂... 黑科技讲解(wpk俱乐部)外挂透视辅助挂(透视)细节方法(都是是有挂)1、wpk俱乐部透视辅助简单,...
黑科技游戏!(wpK)透视辅助... 黑科技游戏!(wpK)透视辅助app,(Wpk)原先存在有挂,德州教程(有挂辅助);德州软件透明挂作...
黑科技最新(微扑克机器人)外挂... 黑科技最新(微扑克机器人)外挂透视辅助安装(透视)细节揭秘(本来真的有挂);1、微扑克机器人透视辅助...
黑科技透明挂!(WePoKer... 黑科技透明挂!(WePoKer)软件透明挂,(wePOke)本来真的是有挂,软件教程(有挂透明)1、...
黑科技攻略(wpk俱乐部)外挂... 黑科技攻略(wpk俱乐部)外挂透视辅助教程(透视)透视教程(其实有挂)1、许多玩家不知道wpk俱乐部...
黑科技代打!(德州)外挂辅助工... 1、黑科技代打!(德州)外挂辅助工具,(德州)起初是有挂,2025教程(有挂技巧)(UU poker...
黑科技好牌(WepoKe)黑科... 黑科技好牌(WepoKe)黑科技透明挂辅助器(透视)软件教程(原来存在有挂)1、进入到WepoKe黑...
黑科技透明挂挂!(德扑ai)外... 黑科技透明挂挂!(德扑ai)外挂辅助app,(德扑之星)本来有挂,玩家教你(有挂透明)科技教程也叫必...
黑科技数据(微扑克)外挂透视辅... 黑科技数据(微扑克)外挂透视辅助技巧(透视)我来教教你(真是真的有挂);1、许多玩家不知道微扑克辅助...