Я изучал возможность использования ZODB в качестве постоянного слоя для многопользовательской видеоигры. Мне очень нравится, насколько легко он интегрируется с произвольными объектно-ориентированными структурами данных. Однако я натыкаюсь на одну проблему, по которой я не могу понять, сможет ли ZODB решить эту проблему для меня.
Очевидно, можно использовать ClientStorage
от ZEO для доступа к удаленному хранилищу данных, используемому для сохранения. Хотя это замечательно в доверенной локальной сети, этого нельзя сделать без надлежащей авторизации и аутентификации в открытой сети.
Поэтому мне было интересно, есть ли шанс реализовать следующую концепцию с помощью ZODB:
На стороне сервера я хотел бы иметь запущенный сервер ZEO плюс имитацию игрового мира, который мог бы работать как полностью авторизованный клиент на сервере ZEO (или использовать то же хранилище файлов, что и сервер ZEO).
На стороне клиента мне понадобится очень ограниченный доступ для чтения / записи к серверу ZEO, чтобы клиент мог только просматривать информацию, о которой должен знать его пользователь (например, окружающая область своего персонажа), и мог только изменять информацию, связанную с действиям, которые может выполнять их персонаж.
Эти ограничения должны быть наложены сервером с использованием какой-то детализированной схемы авторизации. Поэтому мне нужно было бы сообщить серверу, есть ли у пользователя A разрешения на чтение / запись объекта B.
Есть ли способ сделать это в ZODB или сторонних решениях для такого рода проблем? Или есть способ расширить ZEO таким образом?