Suche…
Meteor-Kontopaket
Sie haben einige Möglichkeiten, um sich bei Meteor anzumelden. Die gebräuchlichste Methode ist die Verwendung von accounts
für Meteor.
Konto-Passwort
Wenn Sie möchten, dass sich Benutzer auf Ihrer Site erstellen und registrieren können, können Sie accounts-password
.
Installieren Sie das Paket mit dem meteor add accounts-password
das Konto " meteor add accounts-password
.
Um einen Benutzer zu erstellen, müssen Sie Accounts.createUser(options, [callback])
options
muss ein Objekt mit den folgenden Eigenschaften sein:
-
username
: Der Benutzername des Benutzers als String. -
email
: Die E-email
des Benutzers als Zeichenfolge. -
password
: Das (nicht verschlüsselte) Kennwort des Benutzers als Zeichenfolge. -
profile
: Die optionalen zusätzlichen Daten des Benutzers als Objekt. Dies kann beispielsweise der Vor- und Nachname des Benutzers sein.profile
ist jedoch optional.
Der Callback gibt 1 Variable zurück, wenn ein Fehler vorliegt, bei dem es sich um ein Meteor.Error-Objekt handelt.
Sie müssen lediglich entweder den username
oder die email
. Sie können also einen Benutzer mit einem Benutzernamen, aber ohne E-Mail erstellen, und umgekehrt. Sie können auch beides verwenden.
Wenn alles korrekt lief, wird die neu erstellte Benutzer-ID zurückgegeben.
So können Sie beispielsweise Folgendes verwenden:
// server side
var id = Accounts.createUser({
username: "JohnDoe",
email: "[email protected]",
password: "TheRealJohn123",
profile: {
firstName: "John",
lastName: "Doe"
}
}, function(err) {
console.log(err.reason);
});
Sie werden automatisch auch angemeldet, wenn der Benutzer erfolgreich erstellt wurde.
Das ist der schaffende Teil. Um sich anzumelden, müssen Sie Meteor.loginWithPassword(identifier, password, [callback])
auf der Clientseite verwenden.
identifier
ist der username
, die email
userId
oder die username
userId
als Zeichenfolge Ihres Benutzers. password
ist das (nicht verschlüsselte) password
des Benutzers.
Der Rückruf gibt eine Variable zurück, wenn ein Fehler vorliegt, bei dem es sich um ein Meteor.Error-Objekt handelt.
Beispiel:
// client side
Meteor.loginWithPassword("JohnDoe", "TheRealJohn123", function(err) {
console.log(err.reason);
});
Und das ist es für das grundlegende Erstellen von Konten und das Einloggen.
Zugriff auf Benutzerdaten
Sie können auf der Clientseite prüfen, ob der Benutzer angemeldet ist, indem Sie Meteor.userId()
userId
Diese gibt ihre userId
wenn sie angemeldet ist, und undefined
wenn sie nicht angemeldet ist.
Sie können einige Informationen von Meteor.user()
. Es wird undefined zurückgegeben, wenn der Benutzer nicht angemeldet ist, und einige Benutzerdaten, falls dies der Fall ist. Standardmäßig werden keine Kennwörter angegeben. Standardmäßig werden die Benutzer-ID des Benutzers, der Benutzername und das Profilobjekt angezeigt.
Wenn Sie prüfen möchten, ob ein Benutzer auf einer Seite angemeldet ist, können Sie auch den currentUser
Helper verwenden. Der Inhalt von Meteor.user()
. Beispiel:
{{#if currentUser}}
<h1>Hello there, {{currentUser.username}}!</h1>
{{else}}
<h1>Please log in.</h1>
{{/if}}
Andere Kontofunktionen
Es gibt einige andere Funktionen, die für jedes Kontopaket funktionieren.
Sie können sich mit Meteor.logout()
Verwenden Sie nicht das Standardprofilfeld
Es gibt ein verführerisches Feld namens profile
, das standardmäßig hinzugefügt wird, wenn sich ein neuer Benutzer registriert. Dieses Feld war früher dazu gedacht, als Notizblock für benutzerspezifische Daten verwendet zu werden - etwa für dessen Avatar, Name, Intro-Text usw. Aus diesem Grund ist das profile
jedes Benutzers automatisch von diesem Benutzer vom Client aus beschreibbar . Es wird auch automatisch für den jeweiligen Benutzer auf dem Client veröffentlicht.
Es stellt sich heraus, dass ein Feld, das standardmäßig beschreibbar ist, ohne dass dies sehr offensichtlich ist, nicht die beste Idee ist. Es gibt viele Geschichten von neuen Meteor-Entwicklern, die Felder wie isAdmin
im profile
speichern. Dann kann ein böswilliger Benutzer dies jederzeit auf "true" setzen und sich selbst zum Administrator machen. Selbst wenn Sie sich darüber keine Sorgen machen, ist es nicht ratsam, böswillige Benutzer in der Datenbank beliebige Datenmengen speichern zu lassen.
Anstatt sich mit den Besonderheiten dieses Feldes auseinanderzusetzen, kann es hilfreich sein, seine Existenz einfach zu ignorieren. Sie können dies sicher tun, solange Sie alle Schreibvorgänge vom Client ablehnen:
// Deny all client-side updates to user documents
Meteor.users.deny({
update() { return true; }
});
Selbst wenn Sie die Sicherheitsauswirkungen des Profils ignorieren, ist es nicht ratsam, alle benutzerdefinierten Daten Ihrer App in einem Feld zusammenzufassen. Das Datentransferprotokoll von Meteor führt keine tief verschachtelten Unterschiede zwischen Feldern aus. Daher ist es eine gute Idee, Ihre Objekte in viele Felder der obersten Ebene des Dokuments zu glätten.