Zoeken…
Meteor-accountspakket
Je hebt een paar opties als het gaat om inloggen met Meteor. De meest gebruikelijke methode is het gebruik van accounts
voor Meteor.
Accounts met een wachtwoord
Als u wilt dat gebruikers uw website kunnen maken en registreren, kunt u het accounts-password
.
Installeer het pakket met behulp van meteor add accounts-password
.
Om een gebruiker aan te maken, moet u Accounts.createUser(options, [callback])
options
moeten een object zijn met de volgende eigenschappen:
-
username
: de gebruikersnaam van de gebruiker als een string .. -
email
: de email van de gebruiker als een string. -
password
: hetpassword
de gebruiker (niet versleuteld) als een string. -
profile
: de optionele extra gegevens van de gebruiker als een object. Dit kan bijvoorbeeld de voor- en achternaam van de gebruiker zijn.profile
is echter optioneel.
De callback retourneert 1 variabele als er een fout is, wat een Meteor.Error-object is.
U bent alleen verplicht om de username
of de email
, dus u kunt een gebruiker met gebruikersnaam maar geen e-mail maken en vice versa. Je kunt ook beide gebruiken.
Het retourneert het nieuw gemaakte gebruikers-ID als alles correct is verlopen.
Dus je kunt dit bijvoorbeeld gebruiken:
// server side
var id = Accounts.createUser({
username: "JohnDoe",
email: "[email protected]",
password: "TheRealJohn123",
profile: {
firstName: "John",
lastName: "Doe"
}
}, function(err) {
console.log(err.reason);
});
U wordt ook automatisch aangemeld als de gebruiker met succes is gemaakt.
Dat is het scheppende deel. Om in te loggen, moet u Meteor.loginWithPassword(identifier, password, [callback])
aan de clientzijde gebruiken.
identifier
is de username
, email
of userId
als een string van uw gebruiker. password
is het (niet gecodeerde) password
van de gebruiker.
De callback retourneert één variabele als er een fout is, wat een Meteor.Error-object is.
Voorbeeld:
// client side
Meteor.loginWithPassword("JohnDoe", "TheRealJohn123", function(err) {
console.log(err.reason);
});
En dat is het voor het eenvoudig maken van accounts en inloggen.
Toegang tot gebruikersgegevens
U kunt aan de clientzijde controleren of de gebruiker is ingelogd door Meteor.userId()
aan te roepen. Meteor.userId()
retourneert zijn userId
als hij is ingelogd en undefined
als hij niet is ingelogd.
U kunt sommige informatie krijgen van Meteor.user()
. Het retourneert ongedefinieerd als de gebruiker niet is aangemeld, en sommige gebruikersgegevens als dit het geval is. Het geeft je standaard geen wachtwoorden, standaard worden het userId van de gebruiker, de gebruikersnaam en het profielobject getoond.
Als u wilt controleren of een gebruiker op een pagina is aangemeld, kunt u ook de currentUser
helper van de gebruiker gebruiken. Het zal de inhoud van Meteor.user()
. Voorbeeld:
{{#if currentUser}}
<h1>Hello there, {{currentUser.username}}!</h1>
{{else}}
<h1>Please log in.</h1>
{{/if}}
Overige accountfuncties
Er zijn enkele andere functies die voor elk accountpakket werken.
U kunt uitloggen met Meteor.logout()
Gebruik niet het standaard profielveld
Er is een verleidelijk bestaand veld genaamd profile
dat standaard wordt toegevoegd wanneer een nieuwe gebruiker zich registreert. Dit veld was historisch bedoeld om te worden gebruikt als een kladblok voor gebruikersspecifieke gegevens - misschien hun afbeeldingsavatar, naam, introtekst, enz. Hierdoor kan het profile
op elke gebruiker automatisch worden geschreven door die gebruiker vanaf de client . Het wordt ook automatisch gepubliceerd voor de betreffende gebruiker.
Het blijkt dat een veld standaard beschrijfbaar zijn zonder dat dat super overduidelijk is, misschien niet het beste idee is. Er zijn veel verhalen over nieuwe Meteor-ontwikkelaars die velden zoals isAdmin
in hun profile
opslaan ... en dan kan een kwaadwillende gebruiker dit eenvoudig waar maken wanneer hij maar wil, waardoor hij zelf een beheerder wordt. Zelfs als u zich hier geen zorgen over maakt, is het geen goed idee om kwaadwillende gebruikers willekeurige hoeveelheden gegevens in uw database te laten opslaan.
In plaats van de details van dit veld te behandelen, kan het nuttig zijn om het bestaan ervan volledig te negeren. U kunt dit veilig doen zolang u alle schrijfacties van de client weigert:
// Deny all client-side updates to user documents
Meteor.users.deny({
update() { return true; }
});
Zelfs als de beveiligingsimplicaties van het profiel worden genegeerd, is het geen goed idee om alle aangepaste gegevens van uw app in één veld te plaatsen. Het gegevensoverdrachtprotocol van Meteor doet niet diep geneste verschillende velden, dus het is een goed idee om uw objecten af te vlakken in veel velden op het hoogste niveau in het document.