如何解决如何在SignalR中为某些但不是所有集线器设置Integrated Windows Authentication
我需要对集线器使用Windows身份验证,但是由于Im在更大的系统中工作,所以我只能通过GlobalHost访问SignalR管道。
我曾经尝试使用AuthorizedAttribute
,但是由于没有注册自动模块,因此没有设置身份。
我尝试设置GlobalHost.HubPipeline.RequireAuthentication();
这设置了身份,但是由于它设置了全局授权,因此其他集线器无法连接。
最后,我尝试添加一个自定义授权模块,该模块仅适用于我想要的一个集线器。 但是,一旦我对一个集线器做出例外处理,就不会再设置身份,并且会收到来自授权集线器的未经授权的响应。
解决方法
我通常将身份验证属性放在集线器类的顶部。
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class myChat : Hub
{
}
这是基于令牌的身份验证,您需要配置从客户端发送身份验证令牌。 https://docs.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。