У меня есть веб-сервер с проверкой подлинности с помощью форм и еще один сервер, на котором размещены концентраторы SignalR. Используя файл cookie проверки подлинности форм, я хочу извлечь текущего пользователя, используя приведенный ниже код. Это было бы возможно с помощью HttpModule, но при использовании SignalR HttpModule использовать нельзя.
Есть ли другой способ заархивировать то, что я хочу сделать?
public class AuthorizationHubModule : HubPipelineModule
{
public AuthorizationHubModule()
{
}
protected override bool OnBeforeConnect(IHub hub)
{
var cookies = hub.Context.Request.Cookies;
if (cookies.ContainsKey(".ASPXAUTH") == true)
{
// Get the user, populate the Thread.CurrentUser...
Cookie cookie = cookies[".ASPXAUTH"];
if (cookie != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
GenericIdentity identity = new GenericIdentity(ticket.Name);
GenericPrincipal principal = new GenericPrincipal(identity, new string[0]);
// Cannot do this because User is readonly (this is possible in a normal HttpModule)
//hub.Context.User = principal;
}
}
return base.OnBeforeConnect(hub);
}
}
Нам нужно установить IPrincipal, связанный с SignalR.