2015-01-14 120 views
3

我正在嘗試使用承載在asp.net MVC5應用程序中的SignalR,並且檢測到Web客戶端的授權失敗。檢測SignalR授權來自Web客戶端的故障

我有一個簡單的樞紐如下:

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 
     } 
    } 
});