재접속시 세션 재확인

This commit is contained in:
2025-08-15 12:06:38 +09:00
parent c449bae5ef
commit d26b3b9295

View File

@ -364,14 +364,15 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
buffer := bytes.NewBuffer([]byte(raw.Payload)) buffer := bytes.NewBuffer([]byte(raw.Payload))
dec := gob.NewDecoder(buffer) dec := gob.NewDecoder(buffer)
if raw.Channel == ws.redisMsgChanName { switch raw.Channel {
case ws.redisMsgChanName:
var msg UpstreamMessage var msg UpstreamMessage
if err := dec.Decode(&msg); err == nil { if err := dec.Decode(&msg); err == nil {
ws.deliveryChan <- &msg ws.deliveryChan <- &msg
} else { } else {
logger.Println("decode UpstreamMessage failed :", err) logger.Println("decode UpstreamMessage failed :", err)
} }
} else if raw.Channel == ws.redisCmdChanName { case ws.redisCmdChanName:
var cmd commandMessage var cmd commandMessage
if err := dec.Decode(&cmd); err == nil { if err := dec.Decode(&cmd); err == nil {
ws.deliveryChan <- &cmd ws.deliveryChan <- &cmd
@ -587,10 +588,18 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
if c.Conn == nil { if c.Conn == nil {
delete(entireConns, c.sender.Accid.Hex()) delete(entireConns, c.sender.Accid.Hex())
go ws.ClientDisconnected(c) go ws.ClientDisconnected(c)
} else if ws.sessionConsumer.IsRevoked(c.sender.Accid) {
c.Conn.MakeWriter().WriteControl(websocket.CloseMessage, unauthdata, time.Time{})
} else {
sk := session.AccountToSessionKey(c.sender.Accid)
auth, _ := ws.sessionConsumer.Query(sk)
if auth.Account != c.sender.Accid {
c.Conn.MakeWriter().WriteControl(websocket.CloseMessage, unauthdata, time.Time{})
} else { } else {
entireConns[c.sender.Accid.Hex()] = c entireConns[c.sender.Accid.Hex()] = c
go ws.ClientConnected(c) go ws.ClientConnected(c)
} }
}
case accid := <-ws.forceCloseChan: case accid := <-ws.forceCloseChan:
if conn := entireConns[accid.Hex()]; conn != nil { if conn := entireConns[accid.Hex()]; conn != nil {