Chiffrer et déchiffrer des données avec une clé
ENCRYPT(value, key) sérialise une valeur en JSON et renvoie un texte opaque. DECRYPT(text, key) renvoie la valeur d'origine, ou null quand le texte a été modifié, n'est pas valide ou a été chiffré avec une autre clé. Le réglage secret de votre config est mélangé à la clé, si bien que les jetons créés sur une installation ne s'ouvrent pas sur une autre.
Utilisez-le pour les liens de réinitialisation de mot de passe, les jetons d'invitation et tout ce que vous remettez à un client et vérifiez plus tard sans le stocker. Placez une expiration dans la valeur (un horodatage) et vérifiez-la après le déchiffrement.
secret : change-this-secret-in-productionexports.install = function() {
ROUTE('GET /token/', create);
ROUTE('GET /verify/', verify);
};
function create($) {
var token = ENCRYPT({ userid: '123', expire: Date.now() + 60000 }, 'reset-password');
$.json({ token: token });
}
function verify($) {
var data = DECRYPT($.query.token || '', 'reset-password');
if (!data || data.expire < Date.now()) {
$.invalid(401);
return;
}
$.json({ userid: data.userid });
}