2015-01-14 3 views
3

Я экспериментирую с SignalR, размещенным в приложении ASP.NET MVC5, и у меня проблема с обнаружением сбоев авторизации от веб-клиента.Обнаружение SignalR авторизации сбоев от веб-клиента

У меня есть простой хаб следующим образом:

public class ChitChat : Hub 
{ 
    [Authorize] 
    public string Hi(string incoming) 
    { 
     Clients.All.echo(incoming); 

     return "Echoed " + incoming; 
    } 
} 

А на веб-странице:

$(function() { 
     var hub = $.connection.chitChat; 

     hub.client.echo = function(msg) { 
      console.log(msg); 
     } 

     $.connection.hub.start().done(function() { 
       console.log("Done starting hub"); 

       hub.server.hi("Client message") 
        .done(function() { 
         console.log(arguments); 
        }) 
        .fail(function() { 
         console.log(arguments); 
        }); 
      }) 
      .fail(function() { 
       console.log("Fail hub" + arguments); 
      }); 
    }); 

Когда я включаю подробные ошибки в конфигурации концентратора, я получаю это в отрицании посыла для привет

Error: Caller is not authorized to invoke the Hi method on ChitChat. 

Без детальных ошибок, я просто получить

Error: There was an error invoking Hub method 'chitchat.Hi'. 

Я хотел бы оставить подробные ошибки выключенными, но все же получить некоторые надежные способы идентификации ошибок аутентификации (я предположил, что я где-нибудь получу код 401/403). Есть ли способ достичь этого?

+0

Вам удалось найти способ достижения этой цели? Я тоже пытаюсь сделать то же самое. –

ответ

0

Учитывая отклонение r, проверьте r.source.status. Это должно дать вам 401/403, когда это проблема авторизации.

0

SignalR использует JQuery под капотом, поэтому обнаружение кода 401 состояния может быть достигнуто следующим образом:

$.ajaxSetup({ 
    statusCode: { 
     401: function() { 
      // your code is here 
     } 
    } 
}); 
Смежные вопросы