2015-12-31 3 views
1

Попытка реализовать signalR в нашем проекте.Использование аутентификации MVC с SignalR v2.x

В настоящее время у вас есть рабочая версия без аутентификации, сервер и клиент успешно разговаривают через веб-узлы.

Все хорошее до сих пор!

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

Пользователь регистрируется на сайте, переходит на страницу с проверкой подлинности с помощью HttpContext.User, установленного на нашу версию iprinciple, которая содержит различные биты данных, специфичные для этого пользователя.

Это доступно для обычного контроллера MVC для сообщений страниц и ajax-вызовов, но не для контроллера концентратора (мое имя, где вызываются методы signalr).

, используя что-то вроде этого:

protected object GetAuthInfo() 
{ 
    var user = Context.User; 
    return new 
    { 
     UserName = user.Identity.Name 
    }; 
} 

Однако это Context.User.Identity является недействительным и Context.User не разрешается. Мне кажется, что websocket находится на другом сеансе и не знает начального сеанса загрузки страницы, поэтому пользовательский идентификатор не был настроен.

+1

Попробуйте quesiton, увидеть, если это помогает: http://stackoverflow.com/questions/20522477/no-access-to-the-session-information-through-signalr-hub-is-my -design-is-wrong – TheBoyan

ответ

1

Вы также нуждались в аутентификации для всех хабов и методов-концентраторов в своем приложении, вызывая метод RequireAuthentication при запуске приложения?

public partial class Startup { 
    public void Configuration(IAppBuilder app) { 
    app.MapSignalR(); 
    GlobalHost.HubPipeline.RequireAuthentication(); 
} 
} 

(выдержка из http://www.asp.net/signalr/overview/security/hub-authorization)

Надеется, что это помогает С Нового годом! С наилучшими пожеланиями Stephane

+0

Да, используя это в Startup. Когда браузер пытается загрузить «signalr/hubs», он терпит неудачу с авторизованным ответом (пытается вернуться на экран входа в систему через returnurl), хотя для доступа к той странице, где запрашивается сигнал/хабы, вы должны войти на сайт, используя аутентификацию форм. – WoofWoof88

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