gpt4 book ai didi

asp.net-mvc - 将 SignalR 与现有授权集成

转载 作者:行者123 更新时间:2023-12-02 13:30:55 27 4
gpt4 key购买 nike

我一直在研究一种将 SignalR 授权属性与自定义授权提供程序(称为 MVCAuthorization)集成的方法,我尝试专门为集线器重新创建授权提供程序,但结果却很困难。太复杂。所以我想知道如何将现有的 Controller 和操作授权与我的 SignalR 集线器和方法集成?

最佳答案

我发现您可以检索 IAuthorization 提供程序。

如果您将集线器视为 Controller ,将方法视为操作,那么您所要做的就是创建一个实现 IAuthorizeHubConnection 和 IAuthorizeHubMethodInitation 的 SignalR 属性

public class HubAuthorizeAttribute : Attribute, IAuthorizeHubConnection,IAuthorizeHubMethodInvocation
{
public virtual bool AuthorizeHubConnection(HubDescriptor hubDescriptor, Microsoft.AspNet.SignalR.IRequest request)
{
IAuthorizationProvider authorizationProvider = DependencyResolver.Current.GetService<IAuthorizationProvider>();

return authorizationProvider.IsAuthorizedController(hubDescriptor.Name);
}

public virtual bool AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubIncomingInvokerContext)
{
IAuthorizationProvider authorizationProvider = DependencyResolver.Current.GetService<IAuthorizationProvider>();

return authorizationProvider.IsAuthorizedAction(hubIncomingInvokerContext.MethodDescriptor.Hub.Name, hubIncomingInvokerContext.MethodDescriptor.Name);
}
}

然后您所要做的就是将该属性放在您的集线器或您想要授权的任何方法上

[HubAuthorize]
public class Message : Hub
{
public void Send(string message)
{
}
}

关于asp.net-mvc - 将 SignalR 与现有授权集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com