【问题标题】:passing userId in Hub of SignalR在 SignalR 的 Hub 中传递 userId
【发布时间】:2014-06-01 15:46:33
【问题描述】:

问候..!,如果我想跟踪每个用户并将操作存储在数据库中,我正在使用 SignalR 制作一个 asp.net 聊天 webApplication。我使用 userId 来跟踪它们。 我的问题是我不想将机密数据(如 userId)从客户端表单传递到 signalR 集线器。而且我知道 SignalR 集线器类不支持会话。 那我该怎么做。

我是 signalR 的新手,我在 Google 上搜索了很多关于这个问题的信息,但找不到任何简单的答案。

【问题讨论】:

  • 如果你的用户通过了身份验证,它应该自动传递并且应该在上下文用户对象中。
  • 但是我怎样才能跟踪他以及他的connectionId和UserId,ConnectionId是由集线器类生成的,而UserId是由我生成的。我想将它们都存储在一个表或列表中。我的目的是跟踪它们并允许将消息传递给具有特定 userId 的用户。

标签: c# asp.net signalr


【解决方案1】:

SignalR 支持对用户进行身份验证和授权的不同方式:

  • 饼干
  • Windows 身份验证
  • 证书
  • 连接头

您可以在此处找到有关 SignalR 和安全性的更多信息:

http://www.asp.net/signalr/overview/signalr-20/security/introduction-to-security

请记住,即使某些信息可能会被传输,但通常存在一种抽象,它不会真正让某人将用户映射到服务器上的令牌,反之亦然。

身份验证和授权只是安全性的一小部分,通过使用 SSL 并仔细考虑您已经说过的传输内容等。

但在某些时候,您需要在服务器端应用程序和调用者的相关信息之间建立链接。这可能是在基于经典表单的身份验证、基于哈希的标头或您想要创建的任何内容之后由 cookie 标识的会话。 SignalR 非常灵活,因此您可以考虑针对不同系统进行身份验证之类的事情,并且只传递一个委托令牌。

【讨论】:

    【解决方案2】:

    您有不同的方法来映射您的 userId 和 connectionId。 看看this tutorial on asp.net

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多