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
}
}
Run Code Online (Sandbox Code Playgroud)
我能做些什么?谢谢!
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 次 |
| 最近记录: |