asp.net-mvc - 将 MVC 身份验证与 SignalR v2.x 结合使用

标签 asp.net-mvc asp.net-mvc-4 authentication signalr

尝试将 signalR 实现到我们的项目中。

目前,有一个无需身份验证的工作版本,服务器和客户端通过 websockets 成功通信。

到目前为止一切都很好!

下一步是添加用户登录 ID 以匹配连接 ID,这是我无法弄清楚的。

用户登录站点,进入经过身份验证的页面,并将 HttpContext.User 设置为我们的 iprinciple 版本,其中包含特定于该用户的各种数据位。

这可用于页面发布和 ajax 调用的普通 MVC Controller ,但不可用于 Hub Controller (我的调用信号器方法的名称)。

使用这样的东西:

protected object GetAuthInfo()
{
    var user = Context.User;
    return new
    {
        UserName = user.Identity.Name
    };
}

但是,这个Context.User.Identity为null,并且Context.User没有被授权。在我看来,websocket 位于不同的 session 上,并且不知道初始页面加载 session ,因此尚未设置用户身份。

最佳答案

您是否还需要在应用程序启动时通过调用 RequireAuthentication 方法对应用程序中的所有集线器和集线器方法进行身份验证?

public partial class Startup {
  public void Configuration(IAppBuilder app) {
    app.MapSignalR();
    GlobalHost.HubPipeline.RequireAuthentication();
 }
}

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

希望这有帮助 新年快乐 ! 此致 史蒂芬

关于asp.net-mvc - 将 MVC 身份验证与 SignalR v2.x 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34547240/

相关文章:

c# - Jquery ui 对话框触发多个对话框问题

javascript - 图像未显示在我的 mvc 应用程序中

asp.net - 无法将 ODataQueryOptions 与(常规 - 非 webapi) Controller 派生类一起使用?

flash - WCF 中基于 token 的身份验证

java - Tomcat 7 和 request.getUserPrincipal() 上的相互身份验证

c# - Microsoft 的 .NET GWT 解决方案是什么?

c# - Linq-to-SQL 的开销

jquery - 在 MVC 可编辑中克隆时 DatePicker 不工作

c# - 在具有开放泛型类型的 Controller 上创建操作方法

javascript - 仅通过 http 使用客户端 Javascript 访问 Dropbox 上的文件