SignalR 永久性连接身份验证和授权 (SignalR 1.x)

作者 :Patrick FletcherTom FitzMacken

警告

本文档不适用于最新版本的 SignalR。 查看 ASP.NET Core SignalR

本主题介绍如何对持久连接强制授权。 有关将安全性集成到 SignalR 应用程序的常规信息,请参阅 安全性简介

强制授权

若要在使用 PersistentConnection 时强制实施授权规则, AuthorizeRequest 必须重写 方法。 不能将 Authorize 特性用于持久连接。 该方法 AuthorizeRequest 在每次请求之前由 SignalR 框架调用,以验证用户是否有权执行所请求的操作。 AuthorizeRequest方法不是从客户端调用的;而是通过应用程序的标准身份验证机制对用户进行身份验证。

以下示例演示如何将请求限制为经过身份验证的用户。

public class AuthenticatedConnection : PersistentConnection 
{ 
    protected override bool AuthorizeRequest(IRequest request) 
    { 
        return request.User.Identity.IsAuthenticated; 
    } 
}

可以在 AuthorizeRequest 方法中添加任何自定义授权逻辑;例如,检查用户是否属于特定角色。