SignalR 永久性连接身份验证和授权
作者 :Patrick Fletcher, Tom FitzMacken
警告
本文档不适用于最新版本的 SignalR。 查看 ASP.NET Core SignalR。
本主题介绍如何对持久连接强制授权。 有关将安全性集成到 SignalR 应用程序的常规信息,请参阅 安全性简介。
本主题中使用的软件版本
- Visual Studio 2013
- .NET 4.5
- SignalR 版本 2
本主题的早期版本
有关 SignalR 早期版本的信息,请参阅 SignalR 旧版本。
问题和评论
请留下反馈,说明你如何喜欢本教程,以及我们可以在页面底部的评论中改进的内容。 如果你有与本教程不直接相关的问题,可以将其发布到 ASP.NET SignalR 论坛 或 StackOverflow.com。
强制授权
若要在使用 PersistentConnection 时强制实施授权规则, AuthorizeRequest
必须重写 方法。 不能将 Authorize
特性用于持久连接。 该方法 AuthorizeRequest
在每次请求之前由 SignalR 框架调用,以验证用户是否有权执行所请求的操作。 AuthorizeRequest
方法不是从客户端调用的;而是通过应用程序的标准身份验证机制对用户进行身份验证。
以下示例演示如何将请求限制为经过身份验证的用户。
public class AuthenticatedConnection : PersistentConnection
{
protected override bool AuthorizeRequest(IRequest request)
{
return request.User.Identity.IsAuthenticated;
}
}
可以在 AuthorizeRequest 方法中添加任何自定义授权逻辑;例如,检查用户是否属于特定角色。