Signalr 从web客户端检测信号授权失败
我正在试验托管在asp.net MVC5应用程序中的SignalR,在检测web客户端的授权失败时遇到问题 我有一个简单的集线器,如下所示:Signalr 从web客户端检测信号授权失败,signalr,signalr-hub,Signalr,Signalr Hub,我正在试验托管在asp.net MVC5应用程序中的SignalR,在检测web客户端的授权失败时遇到问题 我有一个简单的集线器,如下所示: public class ChitChat : Hub { [Authorize] public string Hi(string incoming) { Clients.All.echo(incoming); return "Echoed " + incoming; } } 在网页上:
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);
});
});
当我在集线器配置中启用详细错误时,我在hi的承诺拒绝中得到了这一点
Error: Caller is not authorized to invoke the Hi method on ChitChat.
没有详细的错误,我只需要
Error: There was an error invoking Hub method 'chitchat.Hi'.
我想避开详细的错误,但仍然可以找到一些可靠的方法来识别身份验证失败(我假设我会在某个地方得到401/403代码)。有没有办法做到这一点?如果拒绝r,请检查r.source.status。当它是一个授权问题时,这应该给您一个401/403 Signal在引擎盖下使用jQuery,因此可以通过以下方式检测401状态代码:
$.ajaxSetup({
statusCode: {
401: function() {
// your code is here
}
}
});
你是否找到了实现这一目标的方法?我也在尝试做同样的事情。