revoke된 세션 처리 추가
This commit is contained in:
@ -74,10 +74,6 @@ func make_storagekey(acc primitive.ObjectID) storagekey {
|
|||||||
return storagekey(acc.Hex() + hex.EncodeToString(bs[2:]))
|
return storagekey(acc.Hex() + hex.EncodeToString(bs[2:]))
|
||||||
}
|
}
|
||||||
|
|
||||||
func AccountToSessionKey(acc primitive.ObjectID) string {
|
|
||||||
return string(make_storagekey(acc))
|
|
||||||
}
|
|
||||||
|
|
||||||
func storagekey_to_publickey(sk storagekey) publickey {
|
func storagekey_to_publickey(sk storagekey) publickey {
|
||||||
bs, _ := hex.DecodeString(string(sk))
|
bs, _ := hex.DecodeString(string(sk))
|
||||||
|
|
||||||
|
|||||||
@ -257,6 +257,15 @@ func (c *consumer_redis) Query(pk string) (Authorization, error) {
|
|||||||
defer c.lock.Unlock()
|
defer c.lock.Unlock()
|
||||||
|
|
||||||
sk := publickey_to_storagekey(publickey(pk))
|
sk := publickey_to_storagekey(publickey(pk))
|
||||||
|
|
||||||
|
if _, deleted := c.stages[0].deleted[sk]; deleted {
|
||||||
|
return Authorization{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, deleted := c.stages[1].deleted[sk]; deleted {
|
||||||
|
return Authorization{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
si, err := c.query_internal(sk)
|
si, err := c.query_internal(sk)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Println("session consumer query :", pk, err)
|
logger.Println("session consumer query :", pk, err)
|
||||||
|
|||||||
@ -591,14 +591,8 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
|
|||||||
} else if ws.sessionConsumer.IsRevoked(c.sender.Accid) {
|
} else if ws.sessionConsumer.IsRevoked(c.sender.Accid) {
|
||||||
c.Conn.MakeWriter().WriteControl(websocket.CloseMessage, unauthdata, time.Time{})
|
c.Conn.MakeWriter().WriteControl(websocket.CloseMessage, unauthdata, time.Time{})
|
||||||
} else {
|
} else {
|
||||||
sk := session.AccountToSessionKey(c.sender.Accid)
|
entireConns[c.sender.Accid.Hex()] = c
|
||||||
auth, _ := ws.sessionConsumer.Query(sk)
|
go ws.ClientConnected(c)
|
||||||
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