Аутентификация SignalR с помощью JavaScript-клиента
Я играл сopen authentication
вMVC5
а такжеSignalR
, Я использую JavaScript-клиент для вызова простого серверного метода наSignalR
и получить ответ от Сервера. Это хорошо работает, но если я добавлю[Authorize]
тег, он даже не вызывает метод сервера (не получил никакого ответа при отладке).
Я предполагал, что сервер будет использовать механизм аутентификации для вызова клиента. Я что-то пропустил? Нужно ли вручную аутентифицировать пользователя со стороны клиента, и если да, то как мне передать маркер аутентификации?
Вот's my:hub
[HubName("authChatHub")]
public class AuthChatHub : Hub
{
[Authorize]
public void Ping()
{
Clients.Caller.Pong("Connection is FINE!!");
Clients.Caller.Pong(Context.User == null
? "Null user"
: Context.User.Identity.IsAuthenticated.ToString());
}
}
Вот'мойStartup.Auth.cs
public void ConfigureAuth(IAppBuilder app)
{
app.UseGoogleAuthentication();
}
Вот'сStartup.cs
, используя код для включения CORS.
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app); //added this after a suggestion here, not sure if this is the right place.
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
// EnableJSONP = true //empty for now
};
map.RunSignalR(hubConfiguration);
});
}
}
И наконец этоclient
код стороны вызываетhub
метод и слушает сервер RPC.
this.sendMessage = () => {
this.authChat.server.ping();
};
this.authChat.client.pong = (message) => { console.log(message); };