我试图从使用SignalR的ASP.NET MVC5获取基于声明的授权,并且我已经按照本教程进行了操作:
http://www.asp.net/signalr/overview/signalr-20/security/hub-authorization
我尝试了集线器上的vanilla Authorize
属性以及他们提供的自定义AuthorizeClaimsAttribute
类作为示例,但它们似乎都不起作用。
在后一种情况下,IPrincipal user
参数将为null。事实上,request.GetOwinContext()
扩展方法返回的整个上下文似乎是未初始化的,所以试图挖掘对象以获得它"免费"不会工作。
所有这些都包含Microsoft.AspNet.SignalR.Cookie
。
唯一的方法是让这个工作来做我自己的cookie解析/解密吗?如果是这样,怎么样?
答案 0 :(得分:4)
事实证明问题与Startup
类中的处理程序注册顺序有关。
我在致电app.MapSignalR()
之前打电话给app.UseCookieAuthentication(...)
,但只是通过切换订单,一切都开始了。
更重要的是,它适用于直接应用于集线器的普通Microsoft.AspNet.SignalR.AuthorizeAttribute
,无需自定义属性。