2013-10-05 6 views
1

Я думаю, что здесь что-то не хватает, потому что это не должно быть так сложно.Nancy и SignalR Аутентификация

У меня есть приложение, поддерживающее nancy IIS, которое использует аутентификацию, которая работает (устанавливает файл cookie _nca). Затем у меня есть концентратор signalR, который должен получить имя пользователя для входа в систему, чтобы я мог вытащить «Группу», к которой принадлежит пользователь.

Я думал, что просто возьму имя пользователя из Context.User.Identity.Name, но это пусто, и, как кажется, концентратор считает, что я не авторизовался. Я предполагаю, что есть что-то еще, что мне нужно сделать, чтобы сообщить signalR, как аутентифицироваться.

Я думал, что, возможно, установка HttpContext.Current.User поможет, но это, по-видимому, тоже ничего не делало.

Я сделал это следующим

protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) 
    { 
     base.ApplicationStartup(container, pipelines); 
     pipelines.AfterRequest.AddItemToStartOfPipeline(SetUpContext); 
     //pipelines.AfterRequest.AddItemToEndOfPipeline(SetUpContext); 
     CookieBasedSessions.Enable(pipelines); 

     RouteTable.Routes.MapHubs(); 
    } 

    private void SetUpContext(NancyContext ctx) 
    { 
     if (ctx.CurrentUser == null) 
      return; 
     string[] Roles = { "Recipient" }; 

     var userIdent = new UserIdent(); 
     userIdent.IsAuthenticated = true; 
     userIdent.Name = ctx.CurrentUser.UserName; 
     GenericPrincipal principal = new GenericPrincipal(userIdent, Roles); 
     IPrincipal Identity = (IPrincipal)principal; 
     HttpContext.Current.User = Identity; 
    } 

Я также попытался pipelines.BeforeRequest.AddItemToEndOfPipeline. Все еще не повезло.

+0

Как SignalR 2,0 основана на Owin ваша установка будет значительно упрощен, если вы использовали Owin Нэнси, а также. Вы все еще можете использовать IIS, и это позволит вам делать такие важные вещи, как модули аутентификации share. –

+0

Да, я пришел к такому выводу и начал переписывать свое приложение. Надеемся, что копирование, вставляющее большую часть моей работы, по-прежнему будет работать. – Josh

ответ

1

Вот sample с помощью SignalR 2.0 и аутентификации Cookie

+0

Спасибо, я просмотрю это. Я на самом деле закончил использование кода для JabbR, чтобы решить эту проблему, но я считаю, что это намного больше, чем я хочу. – Josh

Смежные вопросы