Как получить уникальное имя пользователя - PullRequest
2 голосов
/ 18 сентября 2011

Я пытаюсь использовать Google App Engine (Java) для обеспечения бэкенда для приложения обмена сообщениями Android, которое я сейчас пишу, я только начинаю с GAP, но имею небольшой опыт работы с Java (через Android).

При первом использовании приложения оно отправляет на сервер некоторые данные о регистрации, они сохраняются в хранилище данных GAE, а на телефон возвращается уникальный идентификатор (или сообщение об ошибке, если что-то сломалось)..

Поскольку я не вижу что-то, похожее на key = datastore.giveMeAUniqueKey или datastore.hasThisBeenUsedBefore(key), я думаю, мне придется сгенерировать случайный ключ и посмотреть, был ли он взят (я не уверен, чтокак это сделать, если честно).

Любые идеи (либо ответы на конкретный вопрос, либо указатель на полезные ресурсы для начала работы)?

Спасибо.

1 Ответ

3 голосов
/ 18 сентября 2011

Если это значение не чувствительно к безопасности (т. Е. Это просто идентификатор пользователя и у вас есть какой-то другой способ аутентификации телефона), просто вставьте и возьмите ключ вновь вставленной сущности.Хранилище данных автоматически назначит уникальный ключ гарантии , если вы вставите новую сущность, не предоставив ее.Кроме того, вы можете явно запросить идентификатор с помощью allocate_ids вызова .

Если значение чувствительно к безопасности (это одноразовый номер сеанса или что-то, используемое для аутентификации), используйте SecureRandom класс для генерации последовательности случайных байтов.Не используйте это в качестве ключа для объекта, такого как объект пользователя;это исключает изменение идентификатора сеанса, если сеанс пользователя скомпрометирован.Для этой цели используйте отдельный идентификатор пользователя и используйте этот безопасный одноразовый номер только для этапа аутентификации.

Обратите внимание, что простое создание циклов при создании идентификаторов, тестирование на наличие конфликтов и вставка небезопасно без с использованием транзакции;Проще (и быстрее, и дешевле ...) просто использовать встроенную систему назначения идентификаторов движка приложения.

...