Использование аутентификации MVC с SignalR v2.x
Пытаюсь внедрить signalR в наш проект.
В настоящее время есть рабочая версия без аутентификации, сервер и клиент успешно общаются через веб-сокеты.
Пока все хорошо!
Следующим шагом было добавление идентификатора имени пользователя для соответствия идентификатору соединения, это то, что я не могу понять.
Пользователь заходит на сайт, попадает на аутентифицированную страницу с HttpContext.User, установленным на нашу версию iprinciple, которая содержит различные биты данных, специфичные для этого пользователя.
Это доступно для обычного контроллера MVC для пост-постов и вызовов ajax, но не для контроллера-хаба (мое имя того, где вызываются методы сигнализатора).
используя что-то вроде этого:
protected object GetAuthInfo()
{
var user = Context.User;
return new
{
UserName = user.Identity.Name
};
}
Однако этот Context.User.Identity имеет значение null, а Context.User не авторизован. Мне кажется, что веб-сокет находится в другом сеансе и не знает о начальном сеансе загрузки страницы, поэтому идентификация пользователя не была установлена.
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)
Надеюсь, это поможет с новым годом! С наилучшими пожеланиями Стефан