gpt4 book ai didi

c# - 检查 SignalR 属性中的授权

转载 作者:太空狗 更新时间:2023-10-29 18:29:05 25 4
gpt4 key购买 nike

我在 ServiceStack 上有一些服务,并在这个项目中使用 SignalR。

现在,我想保护集线器连接(仅供经过身份验证的用户访问),但我使用 ServiceStack 框架身份验证..(不是 asp.net 身份验证)和 ServiceStack 的 session (在此 session 和身份验证标志中写入 AuthUserId)。

因此,当用户尝试连接到集线器时——集线器必须检查身份验证...

(是的,我可以从 Hub 请求 Cookie(例如方法 OnConnected),但是 SignalR 在授权属性中检查身份验证 - 我必须在这个类中(而不是在 hub 中)

( http://www.asp.net/signalr/overview/signalr-20/security/hub-authorization )

所以,我创建类

[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class AuthorizeMyAttribute : AuthorizeAttribute
{
protected override bool UserAuthorized(System.Security.Principal.IPrincipal user)
{
//... how can i request Cookies? / or may be can access for ServiceStack session...
// and return true or false
}
}

我能为它做什么?谢谢!

最佳答案

AuthorizeAttribute 还有两个虚方法:

  • AuthorizeHubConnection(HubDescriptor hubDescriptor, IRequest 请求)
  • AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubIncomingInvokerContext, bool applyToMethod)

http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.authorizeattribute(v=vs.118).aspx

这两种方法的默认实现都使用请求的 IPrincipal 调用 UserAuthorized

AuthorizeHubConnection 被传递了一个 IRequest直接。

AuthorizeHubMethodInvocation 中,您可以从 IHubIncomingInvokerContext 访问 IRequest 对象,如下所示:hubIncomingInvokerContext.Hub.Context.Request.

关于c# - 检查 SignalR 属性中的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22650011/

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