如何在WebApi中授权SignalR Hub?

时间:2018-08-28 01:44:54

标签: c# asp.net-web-api signalr

我创建一个ASP.NET WebApi项目,它使用[Authorize]属性来授权控制器,例如:

[System.Web.Http.Authorize(Roles="Users, Admins")]
public ValueController : ApiController
{
     [HttpGet]
     public string GetValue()
     {
         return "Hello World !";
     }
}

现在我想将Signalr添加到该项目。这就是我所做的:

在App_Start / Startup.Auth.cs中,在ConfigureAuth()函数中添加以下代码以启动SignalR。

app.Map(signalr, map =
{
    map.UseCors(CorsOptions.AllowAll);
    var hubConfiguration = new HubConfiguration
    {
    };

    hubConfiguration.EnableDetailedErrors = true;
     map.RunSignalR(hubConfiguration);
});

然后我添加一个MessageHub,试图允许授权用户向所有客户端发送消息:

[Microsoft.AspNet.SignalR.Authorize]
public class MessageHub : Hub
{
    public void SendMessage(string message)
    {
        Clients.All.SendMessage(message);
    }
}

如果我启动此项目,请在浏览器中输入http://localhost:4000/signalr/hubs,我会收到一个集线器js。

第一季度-对我来说,这意味着SignalR正在开发我的WebApi项目,对吗?

现在我需要测试SendMessage,首先要做的是通过http://localhost:4000/Token登录,然后获取一个access_token。在webApi中,我通常将此令牌放在Header中:

Authorization : Bearer access_token

访问API。

第二季度-现在我应该如何使用此令牌来访问MessageHub?

0 个答案:

没有答案