Blazor服务器身份验证JWT适用于除Web应用程序以外的所有SignalR
创始人
2024-12-21 07:30:12
0次

在 Blazor 服务器应用程序中使用 JWT 进行身份验证通常是很简单的,但是如果要在 SignalR 中使用 JWT,则需要一些额外的步骤。

首先,需要在 StartUp 类的 ConfigureServices 方法中添加以下代码:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = Configuration["Jwt:Issuer"],
            ValidAudience = Configuration["Jwt:Audience"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
        };

        options.Events = new JwtBearerEvents
        {
            OnMessageReceived = context =>
            {
                var accessToken = context.Request.Query["access_token"];
                var path = context.HttpContext.Request.Path;
                if (!string.IsNullOrEmpty(accessToken) && path.StartsWithSegments("/chat"))
                {
                    context.Token = accessToken;
                }
                return Task.CompletedTask;
            }
        };
    });

services.AddSignalR();

这个代码段配置了身份验证和 SignalR,并设置了 JWT 的验证参数和事件。在 OnMessageReceived 事件中,将访问令牌分配给 SignalR 请求。

接下来,可以在 SignalR Hub 中进行身份验证。添加以下代码到 Hub 类中:

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class ChatHub : Hub
{
    // ...
}

该代码会将 JWT 认证方案添加到聊天 Hub 中,从而保护 SignalR 的所有方法。不带正确令牌的客户端将无法连接到 Hub、调用或接收方法。

最后,需要在客户端上设置 JWT 令牌。可以在 Blazor 组件中获取令牌,并通过 SignalR 连接发送它。

以下是包含 SignalR 和 JWT 认证的 Blazor 组件的示例代码:

@inject IAccessTokenProvider TokenProvider
@inject NavigationManager NavigationManager
@using Microsoft.AspNetCore.Authentication.JwtBearer
@using Microsoft.AspNetCore.Http.Connections.Client
@using System.Net.Http.Json


    
        
        
        
        

相关内容

热门资讯

攻略讲解,德扑之星辅助作弊挂,... 攻略讲解,德扑之星辅助作弊挂,AApoker开挂破解窍要(本来真的有辅助器)AI 是一款可以让一直输...
总算明白!,wepoker透视... 总算明白!,wepoker透视辅助挂有游戏亮点,菠萝智星德州是如何开挂的窍门(先前存在有透视)AI ...
攻略讲解,wepoker辅助器... 攻略讲解,wepoker辅助器免费下载,菠萝智星德州究竟有没有挂窍要(起初真的有辅助器)是一款可以让...
分享给玩家,wepoker作弊... 您好:wepoker作弊软件是不是真的这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会...
重大通报,德州辅助nzt有用吗... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
攻略讲解,wepoker线上发... 您好:wepoker线上发牌的规律这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现...
每日必备,wepoker线上发... 每日必备,wepoker线上发牌的规律,德扑之星到底有挂吗指南书(先前是真的有开挂)是一款可以让一直...
玩家必看科普!,微扑克辅助器有... 您好,微扑克辅助器有用吗这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家...
查到实测,WePoKer有没有... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
实用技巧,德扑之星能不能透视,... 实用技巧,德扑之星能不能透视,WOK有没有透视挂举措(往昔是有透视挂)是一款可以让一直输的玩家,快速...