Vermeiden Sie die Verwendung von db.UserProperty () beim Speichern von Benutzerobjekten

Bearbeiten 01.08.2014

Ab dieser Bearbeitungszeit erkannte ich, dass das Thema Eigentumdb.UserProperty() wird mindestens aus dem ndb-Datenspeicher entfernt. Gut!

Also ... Es gibt die Modellklasse db.UserProperty (), die die E-Mail-Adresse in Unicode-Reihenfolge speichert. Warum und wie unterscheidet es sich von einer Unicode-Zeichenfolge, in der nur die Zeichenfolge gespeichert werden?

users.get_current_user().email() 

in einem db.StringProperty () sagen wir mal?

Ist es sicher, es zu benutzen wie:

class LocalUser(db.Model):

    user_account = db.UserProperty()

my_local_user = LocalUser.all().filter("user_account=", users.get_current_user().get())

BEARBEITEN

Der Grund, warum ich diese Frage gestellt habe, ist, dass viele Beispiele und einige Bücher für Google App Engine db.UserProperty () für Models verwenden, um die Benutzerinstanz zu speichern. Später, wenn der Benutzer zurückkommt, können sie die db.Model-Instanz für abrufen dieser bestimmte Benutzer.

Meiner Meinung nach führt dies zu Sicherheitslücken in der Benutzerüberprüfung Ihrer Anwendung.

Die Antwort von @RocketDonkey erklärt die Wurzeln meiner Abfrage und gibt eine gute Erklärung, warum nicht db.UserProperty () Benutzerobjektinstanzen zum Speichern der Benutzerauthentifizierung gespeichert werden.

Der richtige Weg ist das Speichern derBenutzeridentifikation() Eigenschaft der Benutzerinstanz, da sie für jeden Benutzer eindeutig und fest ist.

P.S. Entschuldigung für mein Englisch. Wenn jemand bearbeiten kann, wird es geschätzt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage