2014-11-04 3 views
0

나는이 SignalR/MVC 웹 애플리케이션을 구축하고 있습니다.SignalR을 통한 로그인 및 로그 아웃

저는 현재 ajax 호출을 사용하여 로그인 및 로그 아웃 기능을 제공합니다.

대신 SignalR을 통해 전송하고 싶습니다. 그게 가능하니? 인증 쿠키가 어떻게 처리 될지 이해하는 데 어려움을 겪고 있습니다.

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

이 does'nt 작업 :

현재 내 컨트롤러 액션 로그인은 내 허브에 설치 나의 로그 아웃 기능을했습니다,이 그래서

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

     // [Some database stuff...] 

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

이 시도해 않습니다 내가 디버그, 나는 "이 상황에서 응답을 사용할 수 없습니다." 예외이며 로그 아웃하지 않습니다.

내가 잘못 생각하고 있습니까?

감사합니다.

답변

2

SignalR을 사용하여 로그인 및 로그 아웃하려는 동기는 무엇입니까?

SignalR Hub 메소드 호출은 고유 HTTP 요청 (예 : WebSocket 메시지에 의해 트리거 될 수 있음)과 반드시 ​​일치 할 필요는 없습니다. 즉, Hub 메소드 내부에있을 때 항상 응답 헤더를 수정하거나 쿠키를 설정할 수있는 것은 아닙니다.

Ajax 호출을 사용하여 로그인 및 로그 아웃을 계속하는 것이 좋습니다.

+0

주요 동기는 속도이며, SignalR 요청은 아약스 호출에 비해 매우 빠릅니다. 나는 필요한 정보를 텍스트로 보내고 javascript가 쿠키를 빌드하고 signalr 통신을 다시 시작할 수 있습니다 ... (큰 소리로 생각하면) –

+0

@ halter73과 같이 MVC 컨트롤러에서 ajax를 통해 로그 아웃하면 좋습니다. – davidfowl

관련 문제