2023-02-15 300
我试图使用此处的示例项目授权信号授权请求 AngularJS身份验证基于此项目 Angularjs使用Web令牌的身份验证.我所拥有的问题是使用信号授权,我必须覆盖SignalSR AuthorizeAttribute类,如下所示:
public class QueryStringBearerAuthorizeAttribute : AuthorizeAttribute
{
public override bool AuthorizeHubConnection(HubDescriptor hubDescriptor, IRequest request)
{
var token = request.QueryString.Get("Bearer");
var authenticationTicket = Startup.AuthServerOptions.AccessTokenFormat.Unprotect(token);
if (authenticationTicket == null || authenticationTicket.Identity == null || !authenticationTicket.Identity.IsAuthenticated)
{
return false;
}
request.Environment["server.User"] = new ClaimsPrincipal(authenticationTicket.Identity);
request.Environment["server.Username"] = authenticationTicket.Identity.Name;
request.GetHttpContext().User = new ClaimsPrincipal(authenticationTicket.Identity);
return true;
}
public override bool AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubIncomingInvokerContext, bool appliesToMethod)
{
var connectionId = hubIncomingInvokerContext.Hub.Context.ConnectionId;
var environment = hubIncomingInvokerContext.Hub.Context.Request.Environment;
var principal = environment["server.User"] as ClaimsPrincipal;
if (principal != null && principal.Identity != null && principal.Identity.IsAuthenticated)
{
hubIncomingInvokerContext.Hub.Context = new HubCallerContext(new ServerRequest(environment), connectionId);
return true;
}
return false;
}
}
现在我的集线器如下:
[QueryStringBearerAuthorize]
[HubName("realtime")]
public class WislerAppHub : Hub
{
public string GetServerTime()
{
return DateTime.UtcNow.ToString();
}
}
这个想法是,当信号态连接请求命中此类时,AuthorizeHubConnection应该触发并授权它.但是,从未调用此方法.虽然被调用第二种方法AuthorizeHubMethodInvocation.
我做错了什么?为什么不覆盖工作? BTW我尝试继承:QueryStringBearerAuthorizeAttribute : Attribute, IAuthorizeHubConnection, IAuthorizeHubMethodInvocation具有相同的结果.
谢谢.
好的我得到它的工作.对于那些在这里到达类似问题的人来说,上面的代码运作良好,它没有问题.服务器端没有任何内容(即,此代码)
问题在于信号初始化和来自客户端的呼叫.不知何故,我假设没有道路可以先击中集线器,而不首先击中属性.显然有!我刚刚改变了我的AngularJS代码并工作.
以上所述是小编给大家介绍的使用网络API令牌进行SignalR授权,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/33803.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态