Bien que ce travail soit normalement fait par des librairies, nous allons créer un système d'authentification dans le but de solidifier les acquis du cours théoriques.
Améliorez le code suivant dans src/routes/login/+page.svelte
Dans src/routes/login/+page.server.js
npm install prisma --save-dev npx prisma init --datasource-provider sqlite
Dans le fichier prisma/schema.prisma
model User { id Int @id @default(autoincrement()) email String @unique password String }
Ensuite, lancez la commande npx prisma migrate dev --name init
Pour regarder les données en DB, utilisez la commande npx prisma studio
Stocker le mot de passe en clair n'est pas une bonne pratique. Il faut le saler et le hacher. Pour cela, nous utiliserons la librairie bcrypt (npm install bcrypt
).
Modifiez l'inscription pour que les mots de passe soient hachés en base de données.
Pour l'authentification, on compare les mots de passe hachés.
Implémentez la connexion
Dans une action, on peut utiliser
pour créer un cookie.
Le but est de faire persister la session en créant une "carte d'identité" pour que l'utilisateur n'ait pas à se reconnecter.
N'oubliez pas que les cookies peuvent être faussés par l'utilisateur!
Créez un cookie signé lorsque l'authentification est réussie.
Nous créerons un cookie de la forme suivante:
email;signature
Veillez à garder la clé secrète côté serveur!
Il reste maintenant à vérifier si l'utilisateur est connecté!