Пока я так и не придумал как получить объект сессии в connect функции и надо ли оно мне вообще. Пока наверное обойдусь тем, что получаю имя из шифрованной сессии aiohttp:
@sio.event
async def connect(sid, environ):
obj = ast.literal_eval(authenticate_user(environ))
username = obj['session']['username']
await sio.save_session(sid, {'username': username})
print("connect ", sid, username)
def authenticate_user(environ):
cookies = environ['HTTP_COOKIE'].split(';')
regexp = ' \s*AIOHTTP_SESSION='
for i in cookies:
if re.match(regexp, i):
AIOHTTP_SESSION =re.split(regexp, i)[-1]
f = fernet.Fernet(fernet_key)
return f.decrypt(bytes(AIOHTTP_SESSION, 'utf-8')).decode('utf-8')