Nicht wirklich, es muss nur für den Benutzer eindeutig sein.
Sie könnten zum Beispiel als Teil des Passwort-Reset benötigen Sie einen Benutzernamen oder E-Mail-Adresse zur Verfügung gestellt werden. In dieser Hinsicht muss Ihr Zurücksetzungs-Token nur für diesen Benutzer eindeutig sein.
Auch, da Sie kein Token in einer Liste von bekannten guten Token für alle Benutzer ist es viel schneller nachschlagen müssen.
Zum Beispiel, mit einem global eindeutigen Passwort-Reset-Token muss ich entweder einige zusätzliche Details wie Benutzerinformationen verwenden, um dieses Token von anderen zu unterscheiden, oder ich muss alle bekannten Token auf irgendeine Weise durchsuchen.
Mit einem einzigartigen Benutzer/Hash-Code muss ich den Code nur überprüfen, für diesen Benutzer vorgesehen ist gültig. Zum Vergleich: Im Allgemeinen finden Sie eine Array-Suche und sogar eine Hashtabellen-Suche dauert viel länger.
Zum Beispiel, wenn ein Benutzer kein Passwort zurücksetzen ihre internen Benutzer initiiert hatte, wie dies im Vergleich aussehen könnten, wenn sie haben. Beachten Sie in diesem Beispiel erlauben wir nur eine einzige letzte Reset-Anforderung Passwort (nicht mehrfach):
User.getName() = "Bob"
User.getUserName() = "Bob5412"
User.resetPasswordRequestedTime() = null
User.resetPasswordToken() = null
or
User.resetPasswordRequestedTime() = 1482628217
User.resetPasswordToken() = "f7de43859d244439b101df4e02cc4e17"
Jetzt habe ich nur müssen überprüfen, ob das Token für den angeforderten Benutzer gültig war. Machen Sie sich keine Sorgen mehr um "Weltweit einzigartig".
In meinem Code ich eine Passwort-Reset-Anforderung erfordern kann durch den Benutzer innerhalb von 4 Stunden abgeschlossen sein, so dass, wenn sie Anfrage sind danach kam ich würde nur ihre Anfrage ignorieren, ohne etwas zu überprüfen.
Ja, sie müssen eindeutig sein und nur einmal verwendet werden. Wenn derselbe Benutzer den gleichen Schlüssel verwendet und versucht, denselben Schlüssel zu verwenden und nicht erlaubt ist/sollte, könnte das ein Problem sein. –
Plus, wenn Sie einen AI/PK-Schlüssel von db verwenden (was Sie sollten), dann macht die Verwendung eines eindeutigen Schlüssels zusammen mit der AI/PK es viel mehr "für den Benutzer" einzigartig. Übrigens, ich kam zu der Frage zurück, um zu sehen, ob es mehr Aktivität gab; Es gab einen weiteren Kommentar, aber er wurde gelöscht. Das einzige, was ich mehr sah, war mein Kommentar. Ich denke, dass das zusammen mit dieser ziemlich viel (sollte) die Frage beantworten. Sie können mich anpingen, wenn Sie wollen, wie ich jetzt die Frage für immer verlassen habe. Genieße dein Weihnachten, * Prost * –