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


    
        
        
        
        

相关内容

热门资讯

黑科技辅助!wepoke智能a... 黑科技辅助!wepoke智能ai,(红龙扑克下载)一直存在有挂,爆料教程(发现有挂);亲,有的,ai...
黑科技辅助!wepoke智能a... 黑科技辅助!wepoke智能ai辅助工具,(扑克之城)好像是真的有挂,攻略教程(有挂方法)是一款可以...
黑科技辅助!wepoke辅助插... 黑科技辅助!wepoke辅助插件安装,(菠萝德州软件)原先是真的有挂,黑科技教程(详细教程);菠萝德...
黑科技辅助!wepoke智能a... 黑科技辅助!wepoke智能ai辅助工具,(德州ai盈利)一直是有挂,AI教程(有挂讲解);德州ai...
黑科技辅助!wepoke透明黑... 黑科技辅助!wepoke透明黑科技,(AAPoKer模拟器)往昔是有挂,科技教程(真的有挂);AAP...
黑科技辅助!wepoke辅助插... 黑科技辅助!wepoke辅助插件安装,(微扑克机器人)总是存在有挂,揭秘教程(果真有挂);微扑克机器...
黑科技辅助!wepoke智能a... 黑科技辅助!wepoke智能ai辅助工具,(德扑之星代打)都是真的有挂,必胜教程(今日头条),德扑之...
黑科技辅助!wepoke智能a... 黑科技辅助!wepoke智能ai辅助工具,(AAPoKerai机器人)真是是有挂,力荐教程(有挂辅助...
黑科技辅助!wepoke有挂真... 黑科技辅助!wepoke有挂真的有挂,(红龙扑克机制)原来有挂,高科技教程(有挂教程);亲,有的,a...
黑科技辅助!wepoke辅助插... 黑科技辅助!wepoke辅助插件,(WePoKe黑科技)先前真的是有挂,2025新版教程(发现有挂)...