using Microsoft.AspNetCore.SignalR; using System.Threading.Tasks; namespace RainOpsMini.Hubs { public class ChatHub : Hub { public async Task SendMessage(string user, string message) { var principal = Context.User; if (principal == null || (!principal.HasClaim("Permission", "chat") && !principal.HasClaim("Permission", "all") && principal.FindFirst("IsSuperAdmin")?.Value != "true")) { throw new HubException("访问被拒绝:权限不足。"); } await Clients.All.SendAsync("ReceiveMessage", user, message); } } }