.net检查用户是否登录signalR

时间:2013-04-19 08:27:48

标签: c# asp.net asp.net-mvc signalr signalr-hub

有没有办法检查用户是否在集线器中登录?

我知道我可以使用它,但是HttpContext在集线器中不可用:

HttpContext.Current.User.Identity.IsAuthenticated 

- 问题是我正在向一堆用户发送数据,并假设其中一个客户端暂时处于非活动状态并且他/她的会话到期。

我想做的是在我的Hub => Send()方法(从事件调用),检查用户是否仍然登录,如果不是,我会向他/她的浏览器发送消息以重新加载页面。

2 个答案:

答案 0 :(得分:2)

如果您只希望身份验证的用户能够连接/发送到集线器,则可以使用集线器上的“授权”属性。如果你想获得当前用户,那么你只需要访问Context.User(它是集线器上可用的属性)。

答案 1 :(得分:1)

您可以使用Context.User.Identity.IsAuthenticated

进行检查
public class Chat : Hub
{
    public void send(string message)
    {
        Clients.addMessage(message);
    }

    public void securesend(string message)
    {
        if (this.Context.User.Identity.IsAuthenticated)
        {
            // secure send.
        }
    }
}

reference