Hello,
Alors déjà en effet stocker le mot de passe, même encrypté, c'est pas fou on ne va pas se mentir.
Ce que tu peux faire en revanche c'est créer un token avec une validité temporaire, le stocker dans les cookies ou la session une fois que l'utilisateur est connecté, et ensuite te servir de ce token pour authentifié ton utilisateur à chaque requête.
Certes dans les deux cas tu as une chaine de caractère encrypté, sauf qu'en utilisant un principe de token avec une validité temporaire tu limite grandement les chances de vol de cookies/session.
Pour la manière dont tu peux le mettre en place, je le vois un peu comme ça:
- L'utilisateur s'identifie avec succès
- Tu génère un token unique, le mieux c'est d'encrypter des infos de son compte avec le timestamp courant, comme ça tu est quasi sûr que deux tokens ne seront jamais égaux.
- Tu renvoye ce token à l'utilisateur pour qu'il y stock dans ces cookies et du côté serveur tu y stock aussi dans la session courante, au cas où les cookies soient vidés pendant la durée de validité du token.
- Dés que l'utilisateur essaye d'accédé à une resource protégé, tu vérifie que le token correspondent bien a un utilisateur. Si ce n'est pas le cas, tu vide la session et tu le redirige sur la page de connection
Il y a très certainement une meilleur manière, ou plus simple, manière de le faire. Mais avec ça au moins tu limite les soucis comparé au fait de stocker toujours le même hash en cookies