인증은 accept() 전에 끝내
핸드셰이크는 클라이언트를 ‘열렸다가 곧바로 닫히는’ 어색한 상태에 두지 않고 거절할 유일한 자리야. 토큰 검증, 권한 확인, 사용자별 속도 제한 같은 모든 인증을 websocket.accept() 전에 끝내. 엄격히 처리하면 연결 비용이 0이지만 느슨하게 처리하면 인증 상태가 새고 클라이언트 경험도 혼란스러워져.
FastAPI Depends 는 WebSocket 에서도 작동해
Depends(...) 체계는 WebSocket 엔드포인트에서도 완전히 지원돼. 토큰을 꺼내 검증하는 의존성을 만들고 실패할 때 WebSocketException 을 일으키면 프레임워크가 연결 종료를 처리해 줘.
쿠키와 토큰
브라우저 사용자가 세션 쿠키로 인증했다면 쿠키는 WebSocket 프로토콜 전환 GET 요청에 자동으로 실려. websocket.cookies 에서 읽으면 돼. 모바일이나 서버 간 통신 같은 비브라우저 클라이언트는 쿼리 문자열에 토큰을 넣어. cwkPippa 도 WebUI 에는 쿠키, 도구에는 토큰을 쓰면서 같은 인증 코드 경로를 서로 다른 운반 방식으로 공유해.