【发布时间】:2014-01-08 18:32:03
【问题描述】:
我有一个带有表单身份验证的 Web 服务器和另一个托管 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);
}
}
我们要做的是设置与 SignalR 关联的 IPrincipal。
【问题讨论】:
标签: asp.net authorization signalr signalr-hub