如何获得使用带有客户端身份验证的客户端mvc应用程序的SignalR连接的用户的身份?

梅迪

在我的解决方案中,我有2个项目:SignalRServerWebClient,它们都是MVC应用程序在我的服务器中,我使用了SignalR 2集线器,在客户端项目中,我使用了jquery SignalR库来通过将托管服务器的URL作为集线器连接URL来连接到集线器服务器。

一切正常,客户端可以从服务器接收消息。

问题:在客户端项目中,我添加了身份验证,用户必须输入用户名和密码才能查看将要查看消息的页面。现在,我想获取已登录到SignalR Hub Server的登录用户名,并使用该用户名将相关消息发送给每个用户。

在与服务器项目分离的客户端项目中进行身份验证时,如何知道哪个用户已连接到服务器?

jQuery客户端中心:

var PbxHub = $.connection.pbxhub;

$.connection.hub.url = "http://localhost:10437/signalr";
$.connection.hub.logging = true;

$.connection.hub.start({
    jsonp: true,
    withCredentials: false
}).done(function () {
    console.log('Hub is connected.');
});

$.connection.hub.disconnected(function () {
    console.log('Hub is disconnected.');
    setTimeout(function () {
        $.connection.hub.start();
    }, 1500); // Restart connection after 1500 miliseconds.
});

客户端启动:

public void Configuration(IAppBuilder app)
{
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Home/Login"),
    });
}

服务器启动:

    public void Configuration(IAppBuilder app)
    {
        app.Map("/signalr", map =>
        {
            var hubConfiguration = new HubConfiguration
            {
                EnableJavaScriptProxies = true,
                EnableJSONP = true,
                EnableDetailedErrors = true
            };

            map.UseCors(CorsOptions.AllowAll);
            map.RunSignalR(hubConfiguration);
        });
    }

感谢任何想法。

梅迪

如此处的Microsoft文档所述https://docs.microsoft.com/zh-cn/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1#cookie-authentication

在基于浏览器的应用程序中,cookie身份验证允许您现有的用户凭据自动流到SignalR连接。使用浏览器客户端时,不需要其他配置。如果用户登录到您的应用,SignalR连接将自动继承此身份验证。

因此,通过使用与客户端应用程序中相同的DBContext,我可以访问连接到集线器的用户的connectionId,并且在向他们发送消息后将记录插入数据库中。

    if (_context.Extension.Any(ex=>ex.Code.ToString() == deviceName))
    {
        extensionID = _context.Extension.SingleOrDefault(ex => ex.Code.ToString() == deviceName).ID.ToString();
    }
    else { return; }

    asterHub.Clients.User(extensionID).SendState(
            e.Device_state.Name,
            string.Format("{0}:{1}:{2}",
                pc.GetHour(DateTime.Now),
                pc.GetMinute(DateTime.Now),
                pc.GetSecond(DateTime.Now)),
            state,
            stateCode);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从客户端应用程序使用Doorkeeper进行身份验证,而不传输秘密

来自分类Dev

使用JAX-WS进行客户端应用程序身份验证

来自分类Dev

Firebase 安全规则,如何对客户端应用程序而非用户进行身份验证?

来自分类Dev

如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

来自分类Dev

从JS客户端在SignalR控制台应用程序上进行身份验证

来自分类Dev

在客户端OWIN Web应用程序中实现Azure Active Directory身份验证

来自分类Dev

在Express应用程序中对Socket.IO客户端进行身份验证

来自分类Dev

Kuberntes入口和客户端身份验证应用程序

来自分类Dev

客户端服务器和Web应用程序之间的身份验证

来自分类Dev

从C#客户端应用程序执行Salesforce身份验证时出错

来自分类Dev

客户端-服务器应用程序中的Google Play服务身份验证

来自分类Dev

如何使用MVC5 ASP.NET Identity Framework对SignalR .NET客户端进行身份验证

来自分类Dev

Sharepoint客户端身份验证

来自分类Dev

如何为客户端Dart应用程序构建安全的无状态身份验证系统

来自分类Dev

在线SharePoint:Windows客户端应用程序可以使用OAuth进行身份验证吗?

来自分类Dev

使用Angular.js和iOS客户端对Node.js应用程序进行身份验证

来自分类Dev

使用Jersey客户端对Spring Security Web应用程序进行身份验证时,我怎么了?

来自分类Dev

如何在 python 中的 Twisted 客户端服务器应用程序中添加身份验证(用户名/密码)?

来自分类Dev

当用户未分配给客户端应用程序时,使用 ASP.Net Core 的 OKTA 身份验证会引发未处理的异常

来自分类Dev

使用HTML客户端应用程序到ASP.Net Web API(MVC)进行表单身份验证

来自分类Dev

没有客户端身份验证的ActiveMQ。客户端需要密钥库吗?

来自分类Dev

Java:如何添加SSL客户端身份验证

来自分类Dev

在我的桌面电子邮件客户端中使用 OAuth 身份验证而不是“应用程序密码”又名“安全邮件密钥”有什么好处?

来自分类Dev

使用HttpClient进行客户端身份验证

来自分类Dev

使用POCO的客户端摘要身份验证

来自分类Dev

具有双向身份验证的服务客户端(2路客户端证书身份验证)

来自分类Dev

通过AWS API Gateway对移动应用程序客户端进行身份验证(社交登录)

来自分类Dev

来自外部客户端应用程序的WordPress RESTful服务的基本身份验证

来自分类Dev

ADAL无头原生客户端应用程序和多因素身份验证(MFA)

Related 相关文章

  1. 1

    从客户端应用程序使用Doorkeeper进行身份验证,而不传输秘密

  2. 2

    使用JAX-WS进行客户端应用程序身份验证

  3. 3

    Firebase 安全规则,如何对客户端应用程序而非用户进行身份验证?

  4. 4

    如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

  5. 5

    从JS客户端在SignalR控制台应用程序上进行身份验证

  6. 6

    在客户端OWIN Web应用程序中实现Azure Active Directory身份验证

  7. 7

    在Express应用程序中对Socket.IO客户端进行身份验证

  8. 8

    Kuberntes入口和客户端身份验证应用程序

  9. 9

    客户端服务器和Web应用程序之间的身份验证

  10. 10

    从C#客户端应用程序执行Salesforce身份验证时出错

  11. 11

    客户端-服务器应用程序中的Google Play服务身份验证

  12. 12

    如何使用MVC5 ASP.NET Identity Framework对SignalR .NET客户端进行身份验证

  13. 13

    Sharepoint客户端身份验证

  14. 14

    如何为客户端Dart应用程序构建安全的无状态身份验证系统

  15. 15

    在线SharePoint:Windows客户端应用程序可以使用OAuth进行身份验证吗?

  16. 16

    使用Angular.js和iOS客户端对Node.js应用程序进行身份验证

  17. 17

    使用Jersey客户端对Spring Security Web应用程序进行身份验证时,我怎么了?

  18. 18

    如何在 python 中的 Twisted 客户端服务器应用程序中添加身份验证(用户名/密码)?

  19. 19

    当用户未分配给客户端应用程序时,使用 ASP.Net Core 的 OKTA 身份验证会引发未处理的异常

  20. 20

    使用HTML客户端应用程序到ASP.Net Web API(MVC)进行表单身份验证

  21. 21

    没有客户端身份验证的ActiveMQ。客户端需要密钥库吗?

  22. 22

    Java:如何添加SSL客户端身份验证

  23. 23

    在我的桌面电子邮件客户端中使用 OAuth 身份验证而不是“应用程序密码”又名“安全邮件密钥”有什么好处?

  24. 24

    使用HttpClient进行客户端身份验证

  25. 25

    使用POCO的客户端摘要身份验证

  26. 26

    具有双向身份验证的服务客户端(2路客户端证书身份验证)

  27. 27

    通过AWS API Gateway对移动应用程序客户端进行身份验证(社交登录)

  28. 28

    来自外部客户端应用程序的WordPress RESTful服务的基本身份验证

  29. 29

    ADAL无头原生客户端应用程序和多因素身份验证(MFA)

热门标签

归档