Избегайте использования db.UserProperty () при хранении пользовательских объектов
Изменить 08/01/2014
На момент редактирования я понял, что свойство объектаdb.UserProperty()
удаляется из хранилища данных ndb как минимум. Хороший!
Итак ... Существует класс модели db.UserProperty (), который хранит адрес электронной почты в порядке Юникода. Почему и как она отличается от строки Unicode, которая просто хранит
users.get_current_user().email()
в db.StringProperty () скажем?
Безопасно ли использовать его как:
class LocalUser(db.Model):
user_account = db.UserProperty()
my_local_user = LocalUser.all().filter("user_account=", users.get_current_user().get())
РЕДАКТИРОВАТЬ
Причина, по которой я задал этот вопрос, заключается в том, что многие примеры и некоторые книги для Google App Engine используют db.UserProperty () для Моделей, чтобы сохранить экземпляр пользователя, а затем, когда пользователь возвращается, они могут получить экземпляр db.Model для этот конкретный пользователь.
На мой взгляд, это открывает уязвимости в проверке пользователей вашего приложения.
Ответ от @RocketDonkey объясняет корни моего запроса и дает хорошее объяснение, почему бы не хранить экземпляры пользовательских объектов db.UserProperty () для хранения аутентификации пользователей.
Правильный способ хранитьЛогин пользователя() Свойство экземпляра User, поскольку оно уникально и фиксируется для каждого пользователя.
Постскриптум Извините за мой английский. Если кто-то может редактировать, это будет оценено.