如何使用 JWT 授权 SignalR Core Hub 方法

2023-12-11

我在 ASP.NET Core 2.0 应用程序中使用 OpenIddict 进行 JWT 身份验证。

我正在遵循的想法这个线程并打电话AuthorizeWithJWTSignalR 握手后的方法。但现在我不知道我应该设置什么AuthorizeWithJWT方法,这样我就可以使用[Authorize(Roles="Admin")]例如。

我尝试设置上下文用户,但它是只读的:

public class BaseHub : Hub
{    
    public async Task AuthorizeWithJWT(string AccessToken)
    {
        //get user claims from AccesToken
        this.Context.User = user;  //error User is read only
    }
}

并使用授权属性:

public class VarDesignImportHub : BaseHub
{
    [Authorize(Roles = "Admin")]
    public async Task Import(string ConnectionString)
    {
    }
}

我强烈鼓励您继续在握手级别进行身份验证,而不是使用在 SignalR 级别实现的自定义和非标准解决方案。

假设您正在使用验证处理程序,您可以强制它从查询字符串中检索访问令牌:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication()
        .AddOAuthValidation(options =>
        {
            options.Events.OnRetrieveToken = context =>
            {
                context.Token = context.Request.Query["access_token"];

                return Task.CompletedTask;
            };
        });
}

Or OnMessageReceived如果你想使用JWTBearer:

services.AddAuthentication()
    .AddJwtBearer(o =>
    {
        o.Events = new JwtBearerEvents()
        {
            OnMessageReceived = context =>
            {
                if (context.Request.Path.ToString().StartsWith("/HUB/"))
                    context.Token = context.Request.Query["access_token"];
                return Task.CompletedTask;
            },
        };
    });

不需要进行其他更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JWT 授权 SignalR Core Hub 方法 的相关文章

随机推荐

  • 使用 JasperReports API 在代码中出现“java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory”

    我正在开发一个简单的独立桌面应用程序 它将根据传递给程序的值生成报告 没有数据库使用 我已经使用 iReport 设计器设计了 JasperReports 报表并添加了一个参数ID NO和一个带有表达式的文本字段 P ID NO 我可以成功
  • 无法修改全局 int,但可以修改列表。如何?

    列表 VAR1 0 def foo VAR1 1 返回VAR1 通话中foo 我收到此错误 UnboundLocalError local variable VAR1 referenced before assignment 但是 请考虑该
  • 陷阱标志(TF)和监视器陷阱标志之间的区别?

    像 GDB 这样的调试功能通过设置 eflags 寄存器的 TF 标志来工作 这会在处理器每次执行指令后引发异常 让 gdb 等工具控制调试 当我们运行虚拟机 Ex 时 在 kvm 的情况下执行以下操作同样 您需要设置一个名为 MONITO
  • 如何从表中选择所有列以及 ROWNUM 等其他列?

    在Oracle中 可以做一个SELECT将行号作为结果集中的列返回的语句 例如 SELECT rownum column1 column2 FROM table returns rownum column1 column2 1 Joe Sm
  • 如何使CSS平滑过渡

    我怎样才能得到像这样的CSS转换示例here 下拉示例 到目前为止 我已经成功地只更改了文本和背景颜色 但没有更改整个过渡效果 矩形在悬停时滚动 在未悬停时平滑回滚 知道我该如何做吗 实现这一目标 这是我的代码 a menulink tex
  • 使用多处理进行日志记录

    我确实有以下内容logger类 如 logger py import logging logging handlers import config log logging getLogger myLog def start Function
  • android:如何测量智能手机产生的流量?

    我需要监控哪些服务 应用程序为我的手机产生了哪些流量 以 kbit s 为单位 按上行链路和下行链路分隔 我该怎么做呢 我用谷歌搜索但没有找到任何有用的帖子 操作方法 答案是 TrafficStats 类 在这里 您可以获得传输的字节和 或
  • C#:设置工具提示气球中箭头的位置?

    是否可以更改气球工具提示中箭头 茎的位置 更改的原因是因为位于屏幕顶部的按钮应该在其下方有一个工具提示 已删除损坏的图像链接 上面是现在的情况 我只需要箭头位于气球的左上角即可 我使用 InteropServices 调用多个 User32
  • 错误:安装 wx 时为 wxpython-phoenix 构建轮子失败

    我正在尝试安装 wxpython 我有 python 3 5 2 32Bit 和 Windows 10 64Bit 我试过 pip install wx我得到 Failed Building Wheel for wxpython phoen
  • 如何控制引导轮播在项目中滑动的速度?

    我看到你可以设置间隔 但我想控制项目滑动的速度 Sets interval what is transition slide speed mainCarousel carousel interval 3000 速度无法通过 API 控制 尽
  • 洗牌所需的 IEnumerable 的扩展方法[重复]

    这个问题在这里已经有答案了 我需要一个扩展方法来洗牌IEnumerable
  • 获取原始文件名谷歌应用引擎

    当在谷歌应用程序引擎上收到文件上传时 这个例子假设您收到的是 png 但是 您只能通过文件名的扩展名知道图像的类型 如何获取GAE上上传的原始文件名 正在上传的文件的文件名可以通过查看来确定filename保存文件的变量的属性 例如 假设您
  • Mechanize 不显示 FB 消息表单

    import mechanize cookielib br mechanize Browser cookie jar cookielib CookieJar br set cookiejar cookie jar br addheaders
  • Android同步cookies webview和httpclient

    我有一个登录 webview 和 httpclient 需要确认用户是否登录 问题是 webview 和 httpclient 正在使用其他 cookie 因此 httpclient 无法获取 webview cookie 我读了很多人的问
  • 更改 Html.TextBox 的大小

    我正在使用新的 Razor 视图引擎开发 ASP NET MVC3 应用程序 但在更改 TextBox 使其成为多行时遇到一些困难 到目前为止 我通过谷歌找到的只是我需要将多行属性设置为 true 但我不知道如何设置 查看代码如下所示 di
  • Java 绑定异常

    即使重用地址设置为 true 什么会导致 TCP 套接字抛出 java net BindException 地址已在使用中 仅当应用程序快速重新启动时才会发生这种情况 在 CentOS 5 Linux 操作系统上运行 这有点解释它 http
  • Tinymce 与 Angular 2/4 的双向绑定

    这是我的tinymce component ts import Component OnDestroy AfterViewInit EventEmitter Input Output from angular core Component
  • 如何为 Web 客户端打开自动重定向

    我有这个代码 class CustomWebclient WebClient System Security SecuritySafeCritical public CustomWebclient base public CookieCon
  • FastMember列顺序保存

    使用 TypeAccessor Create FastMember 时似乎总是返回按字母顺序排序的列列表 是否可以告诉它保留类中列的顺序 例如 var testClass new B 1 A 2 将从 GetMembers 返回 A 列 然
  • 如何使用 JWT 授权 SignalR Core Hub 方法

    我在 ASP NET Core 2 0 应用程序中使用 OpenIddict 进行 JWT 身份验证 我正在遵循的想法这个线程并打电话AuthorizeWithJWTSignalR 握手后的方法 但现在我不知道我应该设置什么Authoriz