재접속시 세션 재확인
This commit is contained in:
@ -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,9 +588,17 @@ 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 {
|
} else {
|
||||||
entireConns[c.sender.Accid.Hex()] = c
|
sk := session.AccountToSessionKey(c.sender.Accid)
|
||||||
go ws.ClientConnected(c)
|
auth, _ := ws.sessionConsumer.Query(sk)
|
||||||
|
if auth.Account != c.sender.Accid {
|
||||||
|
c.Conn.MakeWriter().WriteControl(websocket.CloseMessage, unauthdata, time.Time{})
|
||||||
|
} else {
|
||||||
|
entireConns[c.sender.Accid.Hex()] = c
|
||||||
|
go ws.ClientConnected(c)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case accid := <-ws.forceCloseChan:
|
case accid := <-ws.forceCloseChan:
|
||||||
|
|||||||
Reference in New Issue
Block a user