2014-09-15 3 views
1

내가 SignalR 작업 ASP.NET MVC5에서 클레임 기반 인증을 얻으려고, 나는이 튜토리얼을 따라했습니다 : I 시도주장 신원 SignalR 2

http://www.asp.net/signalr/overview/signalr-20/security/hub-authorization

모두 바닐라 Authorize 속성뿐만 아니라 허브에있는 AuthorizeClaimsAttribute 클래스를 예로들 수 있습니다.하지만 둘 다 작동하지 않는 것 같습니다.

후자의 경우 IPrincipal user 매개 변수가 null로 제공됩니다. 실제로 request.GetOwinContext() 확장 메서드에서 반환 된 전체 컨텍스트는 초기화되지 않은 것처럼 보입니다. 따라서 "무료"로 가져 오기 위해 개체를 파헤 치려고하면 작동하지 않습니다. 내가 한

그러나, 요청 헤더에서 이러한 쿠키 참조 :

  • ASP.NET_SessionId의에게
    • .AspNet.ApplicationCookie
    • __RequestVerificationToken을 그들 모두는 Microsoft.AspNet.SignalR.Cookie의 인스턴스를 포함 .

      내 쿠키 파싱/암호 해독을 수행하는 유일한 방법인가요? 그렇다면 어떻게?

    +0

    auth 클래스가 이벤트를 catch하도록 web.config를 수정 했습니까? – codebased

    +0

    아니, 설명해 주시겠습니까? – gzak

    답변

    4

    Startup 클래스의 핸들러 등록 순서와 관련이있는 것으로 나타났습니다.

    app.UseCookieAuthentication(...)을 호출하기 전에 app.MapSignalR()으로 전화를 걸었습니다. 모든 작업을 시작한 순서를 바꾸기 만하면됩니다.

    또한 허브에 직접 적용되는 일반 Microsoft.AspNet.SignalR.AuthorizeAttribute과 함께 작동하므로 사용자 지정 속성이 필요하지 않습니다.

    +2

    당신은 훌륭합니다! 나는 똑같은 문제가 있었고 문제의 원인은 분명하지 않아서 고마워! – cryss