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 Framework 都會呼叫 方法,以確認使用者有權執行要求的動作。 方法 AuthorizeRequest
不會從用戶端呼叫;相反地,您會透過應用程式的標準驗證機制來驗證使用者。
下列範例示範如何限制對已驗證使用者的要求。
public class AuthenticatedConnection : PersistentConnection
{
protected override bool AuthorizeRequest(IRequest request)
{
return request.User.Identity.IsAuthenticated;
}
}
您可以在 AuthorizationRequest 方法中新增任何自訂的授權邏輯;例如,檢查使用者是否屬於特定角色。