1
有什么方法可以在集线器之外获得当前signalR请求用户吗?我可以在Hub方法中使用Hub.Context.User,但是如果hub方法调用任何其他基础层? Wcf服务调用 - 额外的BehaviorExtensionElement用于添加带有当前用户标识名称的wcf消息头。在集线器外部获得SignalR用户(Hub.Context)
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
request.Headers.Add(MessageHeader.CreateHeader(
Constants.HeaderNames.SessionId,
Constants.HeaderNames.HeaderNamespace,
_hubManager.ResolveHub(Constants.Hubs.MessengerHub).
Context.User.Identity.Name));
}
是的,我发现DefaultHubManager得到集线器,但我不相信这将是从当前请求的枢纽,而不是并行的一个或一个新的,“原因在ResolveHub我结束请参见下面的代码运行
return (DependencyResolverExtensions.Resolve(this._resolver, descriptor.HubType)
?? Activator.CreateInstance(descriptor.HubType)) as IHub;
Obviuosly我可以从毂方法传递用户到呼叫WCF但它需要重构从WCF行为移动到明确地设定请求字段与用户名。 我也可以依靠HttpContext.Current从cookie获取信息?
感谢您的回答,但用户存储(字典)不是我想解决的问题,我现在将用户存储在couchbase中,并且没关系。我想添加身份验证信息到集线器发出的API请求,所以唯一的方法是直接传递用户信息。无论如何,我至少可以依靠cookie吗? – lavrik