Ale*_*lov 8 c# asp.net authorize servicestack signalr
我在ServiceStack上有一些服务,并在这个项目中使用SignalR.
现在,我想保护集线器连接(仅对经过身份验证的用户进行访问),但我使用ServiceStack框架身份验证..(不是asp.net身份验证)和ServiceStack的会话(写入AuthUserId ih此会话和身份验证标志).
因此,当用户尝试连接到集线器时 - 集线器必须检查身份验证...
(是的,我可以从Hub请求Cookie(例如,方法OnConnected),但是在Authorize Attribute中检查身份验证 - 我必须在此类中进行(不在集线器中)
(http://www.asp.net/signalr/overview/signalr-20/security/hub-authorization)
所以,我创建了课程
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class AuthorizeMyAttribute : AuthorizeAttribute
{
   protected override bool UserAuthorized(System.Security.Principal.IPrincipal user)
   {
     //... how can i request Cookies? / or may be can access for ServiceStack session...
     //    and return true or false
   }
}
我能做些什么?谢谢!
AuthorizeAttribute还有两个虚拟方法:
AuthorizeHubConnection(HubDescriptor hubDescriptor, IRequest request)AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubIncomingInvokerContext, bool appliesToMethod)http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.authorizeattribute(v=vs.118).aspx
两个方法的默认实现都UserAuthorized使用请求进行调用IPrincipal.
AuthorizeHubConnection是IRequest直接传递的.
在AuthorizeHubMethodInvocation,您可以IRequest从以下方式访问对象IHubIncomingInvokerContext:hubIncomingInvokerContext.Hub.Context.Request.
| 归档时间: | 
 | 
| 查看次数: | 8730 次 | 
| 最近记录: |