2014-11-04 84 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