Maison >interface Web >js tutoriel >Création d'un formulaire de connexion et d'enregistrement personnalisé avec Meteor
meteor <span>add accounts-password</span>En ajoutant ce package à un projet, une collection Meteor. Ainsi, bien que la création d'une interface personnalisée signifie que nous perdrons la commodité du package Accounts-UI, cela ne signifie pas que nous devons perdre la commodité de la «magie» arrière que Meteor peut fournir.
meteor <span>add accounts-password</span>L'extrait suivant montre plutôt le code du formulaire de connexion:
<span><span><span><template</span> name<span>="register"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="registerEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="registerPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Register"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>Comme vous pouvez le voir, les modèles sont très similaires. Ils contiennent un formulaire, les champs de l'e-mail et du mot de passe, et le bouton Soumettre. La seule différence est la valeur de l'attribut de nom pour les champs d'entrée et le modèle. (Nous ferons référence à ces valeurs bientôt, alors assurez-vous qu'ils sont uniques.) Nous voulons que ces modèles soient affichés pour un utilisateur non encore emblégé. Par conséquent, nous pouvons nous référer à un objet CurrentUser entre le corps d'ouverture et de fermeture Tags:
<span><span><span><template</span> name<span>="login"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="loginEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="loginPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Login"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>Ce code montre le message «vous êtes connecté» si l'utilisateur actuel est connecté et les modèles «enregistrer» et «connecter» autrement.
<span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>Custom Registration Tutorial<span><span></title</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> {{#if currentUser}} <span><span><span><p</span>></span>You're logged in.<span><span></p</span>></span> </span> {{else}} {{> register}} {{> login}} {{/if}} <span><span><span></body</span>></span></span>Ici, nous avons écrit du code afin que le formulaire dans le modèle «enregistrer»:
<span>if (Meteor.isClient) { </span> <span>Template.register.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>console.log("Form submitted."); </span> <span>} </span> <span>}); </span><span>}</span>Pour le modèle «Connexion», le code est presque identique:
<span>Template.register.events({ </span> <span>'submit form': function(event){ </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.registerEmail.value; </span> <span>var passwordVar = event.target.registerPassword.value; </span> <span>console.log("Form submitted."); </span> <span>} </span><span>});</span>
meteor <span>add accounts-password</span>Il s'agit du code que nous pouvons utiliser pour créer un nouvel utilisateur et, par défaut, il nécessite deux options: un e-mail et un mot de passe. Pour les passer, écrivez:
<span><span><span><template</span> name<span>="register"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="registerEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="registerPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Register"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>Le code final de l'événement doit ressembler:
<span><span><span><template</span> name<span>="login"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="loginEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="loginPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Login"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>En utilisant ce code au lieu d'un insert générique Fonction Nous avons l'avantage que les mots de passe sont automatiquement chiffrés. De plus, les utilisateurs sont connectés après l'inscription et nous n'avons pas à écrire beaucoup de code. Il existe également une méthode LoginWithPassword () que nous pouvons utiliser dans l'événement «Connexion»:
<span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>Custom Registration Tutorial<span><span></title</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> {{#if currentUser}} <span><span><span><p</span>></span>You're logged in.<span><span></p</span>></span> </span> {{else}} {{> register}} {{> login}} {{/if}} <span><span><span></body</span>></span></span>Il accepte également les valeurs de messagerie et de mot de passe:
<span>if (Meteor.isClient) { </span> <span>Template.register.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>console.log("Form submitted."); </span> <span>} </span> <span>}); </span><span>}</span>Et dans son contexte, c'est à quoi ressemble le code:
<span>Template.register.events({ </span> <span>'submit form': function(event){ </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.registerEmail.value; </span> <span>var passwordVar = event.target.registerPassword.value; </span> <span>console.log("Form submitted."); </span> <span>} </span><span>});</span>
<span>Template.login.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.loginEmail.value; </span> <span>var passwordVar = event.target.loginPassword.value; </span> <span>console.log("Form submitted."); </span> <span>} </span><span>});</span>Incluez ensuite le code suivant dans la déclaration IF que nous avons écrite plus tôt dans cet article:
<span>Accounts.createUser({ </span> <span>// options go here </span><span>});</span>Maintenant, nous pouvons créer un événement qui est attaché au lien "déconnexion" dans le modèle "Dashboard":
<span>Accounts.createUser({ </span> <span>email: emailVar, </span> <span>password: passwordVar </span><span>});</span>Pour exécuter le processus de connexion, nous n'avons qu'à utiliser une méthode de déconnexion en tant que telle:
<span>Template.register.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.registerEmail.value; </span> <span>var passwordVar = event.target.registerPassword.value; </span> <span>Accounts.createUser({ </span> <span>email: emailVar, </span> <span>password: passwordVar </span> <span>}); </span> <span>} </span><span>});</span>L'enregistrement, la connexion et la déconnexion devraient désormais fonctionner tout comme prévu.
L'ajout de champs supplémentaires au formulaire d'enregistrement dans Meteor est assez simple. Vous pouvez étendre le profil utilisateur en ajoutant plus de champs dans la méthode CompteS.CreateUser. Par exemple, si vous souhaitez ajouter un champ pour le nom complet de l'utilisateur, vous pouvez le faire comme ceci:
comptes.CreateUser ({
Nom d'utilisateur: 'TestUser',
Mot de passe: 'Mot de passe ',
Profil: {
FullName:' Test User '
}
});
Dans cet exemple, «FullName» est un champ supplémentaire ajouté au profil utilisateur. Vous pouvez accéder à ce champ plus tard à l'aide de Meteor.User (). Profil.FullName.
Meteor ne fournit pas un moyen intégré pour personnaliser l'apparence du formulaire de connexion / enregistrement. Cependant, vous pouvez utiliser CSS pour styliser le formulaire en fonction de vos besoins. Vous pouvez attribuer des classes aux éléments de formulaire, puis utiliser ces classes dans votre fichier CSS pour appliquer des styles. Alternativement, vous pouvez utiliser une bibliothèque d'interface utilisateur comme Bootstrap ou Material-UI pour style. Vous pouvez utiliser la méthode Compte.SendVerificationMail pour envoyer un e-mail de vérification à l'utilisateur. Cette méthode prend l'ID de l'utilisateur en tant que paramètre et envoie un e-mail avec un lien que l'utilisateur peut cliquer pour vérifier son adresse e-mail. Vous pouvez appeler cette méthode après avoir créé un nouvel utilisateur comme ceci:
Mot de passe: 'Mot de passe'
}, function (err, userId) {
if (err) {
// gère l'erreur
} else {
comptes.SendVerificationEmail (userId);
}
});
comment puis-je gérer les erreurs pendant l'enregistrement de l'utilisateur dans Meteor?
Lors de la création d'un nouvel utilisateur avec des comptes.CreateUser, vous pouvez fournir une fonction de rappel qui sera appelée avec un objet d'erreur si une erreur se produit. Cet objet d'erreur contient des informations sur ce qui n'a pas fonctionné. Vous pouvez utiliser ces informations pour afficher un message d'erreur approprié à l'utilisateur. Voici un exemple:
Mot de passe: 'Mot de passe'
}, fonction (err) {
if (err) {{
console.log ('Erreur pendant l'enregistrement:', err);
}
});
comment puis-je implémenter le mot de passe Réinitialiser la fonctionnalité dans Meteor?
Meteor fournit une prise en charge intégrée pour la fonctionnalité de réinitialisation du mot de passe. Vous pouvez utiliser les méthodes comptes.forgotpassword et comptes.ResetPassword pour implémenter cela. La méthode des comptes.ForGotPassword envoie un e-mail à l'utilisateur avec un lien qu'ils peuvent cliquer pour réinitialiser leur mot de passe. La méthode des comptes.ResetPassword est utilisée pour modifier réellement le mot de passe de l'utilisateur. Il prend le jeton du lien de réinitialisation et du nouveau mot de passe en tant que paramètres.
Meteor prend en charge la connexion sociale avec divers fournisseurs comme Facebook, Google, et Twitter via ses packages de comptes. Pour ajouter la connexion sociale à votre application, vous devez ajouter le package approprié (par exemple, Accounts-FaceBook pour la connexion Facebook) et le configurer avec les informations d'identification de votre application auprès du fournisseur social.
Vous pouvez utiliser les packages de comptes intégrés de Meteor ainsi qu'un package de routage comme FlowRouter ou Iron Router pour restreindre l'accès à certaines routes basées sur les routes sur l'authentification de l'utilisateur. Vous pouvez vérifier si un utilisateur est connecté à l'aide de Meteor.Userrid () ou Meteor.User (), puis de les rediriger vers la page de connexion si ce n'est pas.
Dans Meteor, vous pouvez stocker des données utilisateur supplémentaires dans le document utilisateur dans la collection Meteor.users. Vous pouvez ajouter des champs supplémentaires à ce document lors de la création d'un nouvel utilisateur avec des comptes.CreateUser, ou vous pouvez mettre à jour un document utilisateur existant avec des données supplémentaires à l'aide de Meteor.Users.update.
Meteor ne fournit pas de prise en charge intégrée pour le contrôle d'accès basé sur les rôles, mais vous pouvez utiliser un package comme Alanning: Rôles pour ajouter cette fonctionnalité à votre application. Ce package vous permet d'attribuer des rôles aux utilisateurs, puis de vérifier ces rôles lorsque vous décidez si un utilisateur est autorisé à effectuer une certaine action.
Vous peut déconnecter un utilisateur en Meteor à l'aide de la méthode Meteor.logout. Cette méthode connecte l'utilisateur actuel sur le client et invalide le jeton de connexion sur le serveur. Il prend également une fonction de rappel qui sera appelée sans arguments lorsque le processus de déconnexion est terminé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!