【问题标题】:SignalR ASP.NET MVC5 IdentitySignalR ASP.NET MVC5 标识
【发布时间】:2014-01-10 15:18:09
【问题描述】:

我正在尝试使用 ASP.NET Identity 使 SignalR 工作。代码非常简单,我们创建一个新的 MVC5 Web 应用程序,启用外部 Google 帐户,使用 google 帐户登录并通过调用向 Hub 发出请求识别用户:

上下文.用户.身份

无论如何,这总是返回 null 并且客户端代理似乎无法发送外部 cookie。

唯一的解决方法是执行此处所述的相同步骤:

http://gobbe.net/2013/06/13/use-the-asp-net-membership-in-a-signalr-chat-with-an-asp-net-mvc-4-application/

解决方法有效,但我更愿意使用其他解决方案。我还检查了https://github.com/gustavo-armenta/CookieAuthenticationSample,但这没有使用外部身份验证。

您对 Hub 如何识别 ASP.NET Identity 的外部身份验证架构有其他想法吗?

谢谢

【问题讨论】:

  • “解决方法有效,但我更愿意使用其他解决方案” - 你能给出具体的理由吗?如果某人给您的下一个建议与您已经知道的解决方法有完全相同的问题怎么办?如果你给出原因,这是可以避免的。
  • 感谢您的反馈。我只是想了解我是否遗漏了什么,或者 SignalR 是否不支持使用 ASP.NET 身份的外部身份验证,如果是这样,我会回退到解决方法。
  • 解决方法非常不安全。恶意客户端为任意显示名称创建有效令牌并不难。似乎作者试图手动实现某种 HMAC,但由于缺少任何类型的密钥而完全失败。使用 System.Web.Security.MachineKey 或 System.Security.Cryptography.ProtectedData 之类的东西会更好。

标签: asp.net signalr asp.net-identity


【解决方案1】:

好的。经过几个小时的搜索,我去了 jabbr 在线支持,davidfowl 提供了帮助。问题在于 Startup 类的调用顺序。我有:

        app.MapSignalR();
        ConfigureAuth(app);

代替:

        ConfigureAuth(app);
        app.MapSignalR();

谢谢大卫。

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 2019-07-19
    • 2015-11-13
    • 1970-01-01
    • 2013-11-25
    • 2015-05-29
    • 2016-05-25
    • 2021-12-21
    • 1970-01-01
    相关资源
    最近更新 更多