Ricerca…
Pacchetto di account Meteor
Hai alcune opzioni quando devi loggarti con Meteor. Il metodo più comune è l'utilizzo di accounts
per Meteor.
Conti-Password
Se vuoi che gli utenti siano in grado di creare e registrarti sul tuo sito, puoi usare accounts-password
.
Installa il pacchetto usando gli meteor add accounts-password
.
Per creare un utente, è necessario utilizzare Accounts.createUser(options, [callback])
options
devono essere un oggetto con le seguenti proprietà:
-
username
: ilusername
utente dell'utente come stringa .. -
email
: l'email
dell'utente come stringa. -
password
: lapassword
dell'utente (non crittografata) come stringa. -
profile
: i dati extra facoltativi dell'utente come oggetto. Questo può essere ad esempio il nome e il cognome dell'utente.profile
è facoltativo, tuttavia.
Il callback restituisce 1 variabile se c'è un errore, che è un oggetto Meteor.Error.
Ti viene richiesto solo di utilizzare il username
o l' email
- email
, in modo da poter creare un utente con nome utente ma senza e-mail e viceversa. Puoi anche usare entrambi.
Restituisce l'ID utente appena creato se tutto è andato a buon fine.
Quindi, per esempio puoi usare questo:
// server side
var id = Accounts.createUser({
username: "JohnDoe",
email: "[email protected]",
password: "TheRealJohn123",
profile: {
firstName: "John",
lastName: "Doe"
}
}, function(err) {
console.log(err.reason);
});
L'accesso verrà eseguito automaticamente anche se l'utente è stato creato correttamente.
Questa è la parte creatrice. Per accedere è necessario utilizzare Meteor.loginWithPassword(identifier, password, [callback])
sul lato client.
identifier
è il username
, email
o userId
come una stringa dal vostro utente. password
è il (non criptato) password
dell'utente.
Il callback restituisce una variabile se c'è un errore, che è un oggetto Meteor.Error.
Esempio:
// client side
Meteor.loginWithPassword("JohnDoe", "TheRealJohn123", function(err) {
console.log(err.reason);
});
E questo è per la creazione di base di account e l'accesso.
Accesso ai dati dell'utente
È possibile controllare sul lato client se l'utente ha effettuato l'accesso chiamando Meteor.userId()
che restituirà i propri userId
se sono connessi e undefined
se non sono connessi.
Puoi ottenere alcune informazioni da Meteor.user()
. Restituirà undefined se l'utente non ha effettuato l'accesso e alcuni dati utente se lo sono. Di default non ti darà alcuna password, per impostazione predefinita mostrerà l'ID utente dell'utente, il nome utente e l'oggetto profilo.
Se si desidera verificare se un utente ha effettuato l'accesso su una pagina, è possibile utilizzare anche l'helper Utente currentUser
. Restituirà il contenuto di Meteor.user()
. Esempio:
{{#if currentUser}}
<h1>Hello there, {{currentUser.username}}!</h1>
{{else}}
<h1>Please log in.</h1>
{{/if}}
Altre funzioni di account
Ci sono alcune altre funzioni che funzionano per ogni pacchetto di account.
È possibile disconnettersi utilizzando Meteor.logout()
Non utilizzare il campo del profilo predefinito
C'è un campo esistente allettante chiamato profile
che viene aggiunto di default quando un nuovo utente si registra. Questo campo è stato storicamente concepito per essere utilizzato come un blocco per i dati specifici dell'utente, ad esempio il loro avatar immagine, nome, testo introduttivo, ecc. Per questo motivo, il campo profile
su ogni utente è automaticamente scrivibile dall'utente dal client . Viene anche automaticamente pubblicato sul client per quel particolare utente.
Si scopre che avere un campo scrivibile di default senza renderlo super ovvio potrebbe non essere la migliore idea. Ci sono molte storie di nuovi sviluppatori di Meteor che memorizzano campi come isAdmin
sul profile
... e quindi un utente malintenzionato può facilmente impostarlo su true ogni volta che lo desidera, diventando un amministratore. Anche se non sei preoccupato per questo, non è una buona idea lasciare che gli utenti malintenzionati memorizzino quantità arbitrarie di dati nel tuo database.
Piuttosto che affrontare le specifiche di questo campo, può essere utile ignorare completamente la sua esistenza. Puoi tranquillamente farlo finché neghi tutte le scritture dal client:
// Deny all client-side updates to user documents
Meteor.users.deny({
update() { return true; }
});
Anche ignorando le implicazioni di sicurezza del profilo, non è una buona idea mettere tutti i dati personalizzati della tua app su un campo. Il protocollo di trasferimento dei dati di Meteor non diffonde profondamente i campi, quindi è una buona idea appiattire gli oggetti in molti campi di livello superiore del documento.