2014-11-04 57 views
0

我有这个SignalR/MVC web应用程序正在构建。通过SignalR登录和注销

我目前使用ajax调用登录和注销functionnality。

我想通过SignalR来传输这些信息。那可能吗?我很难理解auth cookie将如何处理。

目前我控制器操作登录做到这一点

[HttpPost] 
    public ActionResult Login() 
    { 
     var nickname = Request.Params["nickname"]; 
     var password = Request.Params["password"]; 

     // [Some database stuff...] 

     FormsAuthentication.SetAuthCookie(agencyMember.Id.ToString(), true); 
    } 

所以要试试这个,我设置我的注销功能在我的枢纽:

public class Proto1 : Hub 
    { 
    [Authorize(RequireOutgoing = false)] 
    public string Logout() { 
     FormsAuthentication.SignOut(); 
     return "ok"; 
    } 

这一点儿也不工作,当我调试,我得到一个“响应不可用在这种情况下。”异常和注销不通过。

我对此有错吗?

谢谢!

回答

2

您希望使用SignalR进行登录和注销的动机是什么?

SignalR Hub方法调用不一定对应于不同的HTTP请求(例如,它们可以由WebSocket消息触发)。这意味着当您处于Hub方法中时,并不总是可以修改响应标头或设置Cookie。

我建议继续使用Ajax调用登录和注销。

+0

主要动机是速度,SignalR请求与ajax调用相比超快。我可以将所需的信息作为文本发送回去,并将JavaScript构建为cookie +重新启动信号通信...(在此大声思考) – 2014-11-05 15:22:07

+0

作为@ halter73建议通过ajax在您的MVC控制器中注销 – davidfowl 2014-11-09 17:37:31