Cookies
Transmettez les données des visiteurs dans vos docs via un cookie public ou signé.
L'utilisation de contenu adaptatif avec des feature flags nécessite l'ajout de code à votre application.
Cette méthode ne fonctionne que si votre site est servi sous un domaine personnalisé.
Vous pouvez transmettre des données visiteurs à vos documents via les cookies du navigateur de vos visiteurs. Voici un aperçu des différentes méthodes.
Cookie signé gitbook-visitor-token
Identifiants de test API, identification du client
Nécessite une signature et un domaine personnalisé
✅ Les propriétés ne peuvent être définies que par le backend
JWT
Cookie public gitbook-visitor-public
Feature flags, rôles
Facile à configurer
❌ Le visiteur peut remplacer les propriétés
JSON
Cookie public
Pour transmettre des données à GitBook depuis un cookie public, vous devrez envoyer les données depuis votre application en définissant un cookie public gitbook-visitor-public
cookie.
Voici un exemple simple en JavaScript :
import Cookies from 'js-cookie';
const cookieData = {
isLoggedIn: true,
isBetaUser: false,
};
Cookies.set('gitbook-visitor-public', JSON.stringify(cookieData), {
secure: true,
domain: '*.acme.org',
})
Les données transmises via les cookies publics doivent être définies dans votre schéma visiteur via un objet non signé objet.
Cookie signé
Pour transmettre des données à GitBook de manière plus sécurisée, vous devrez envoyer les données sous forme de JSON Web Token depuis votre application dans un cookie nommé gitbook-visitor-token
lié à votre domaine.
Pour configurer cela, vous devrez ajuster le flux de connexion de votre application pour inclure les étapes suivantes :
Générez un JWT lorsque les utilisateurs se connectent à votre application
Chaque fois qu'un utilisateur se connecte à votre produit, générez un JWT contenant les attributs sélectionnés des informations de votre utilisateur authentifié.
Signez le JWT en utilisant la clé de signature visiteur du site
Ensuite, assurez-vous de signer le JWT en utilisant la clé de signature visiteur, que vous pouvez trouver dans les paramètres d'audience de votre site après avoir activé le contenu adaptatif.
Stockez le JWT dans un cookie de session générique
Enfin, vous devez stocker le JWT signé contenant les informations de votre utilisateur dans un cookie de session générique sous le domaine de votre produit.
Par exemple, si votre application est servie derrière le app.acme.org
domaine, le cookie devra être créé sous le .acme.org
domaine générique.
Voici un exemple simple en TypeScript :
import * as jose from 'jose';
import { Request, Response } from 'express';
import { getUserInfo } from '../services/user-info-service';
import { getFeatureFlags } from '../services/feature-flags-service';
const GITBOOK_VISITOR_SIGNING_KEY = process.env.GITBOOK_VISITOR_SIGNING_KEY;
const GITBOOK_VISITOR_COOKIE_NAME = 'gitbook-visitor-token';
export async function handleAppLoginRequest(req: Request, res: Response) {
// Votre logique métier pour gérer la demande de connexion
// Par exemple, vérifier les identifiants et authentifier l'utilisateur
//
// par exemple :
// const loggedInUser = await authenticateUser(req.body.username, req.body.password);
// Après avoir authentifié l'utilisateur, récupérez les informations utilisateur que vous souhaitez
// transmettre à GitBook depuis votre base de données ou service utilisateur.
const userInfo = await getUserInfo(loggedInUser.id);
// Construisez la charge utile du JWT avec les informations de l'utilisateur
const gitbookVisitorClaims = {
firstName: userInfo.firstName,
lastName: userInfo.lastName,
isBetaUser: userInfo.isBetaUser
products: userInfo.products.map((product) => product.name),
featureFlags: await getFeatureFlags({userId: loggedInUser.id})
}
// Générez un JWT signé en utilisant les claims
const gitbookVisitorJWT = await new jose.SignJWT(gitbookVisitorClaims)
.setProtectedHeader({ alg: 'HS256' })
.setIssuedAt()
.setExpirationTime('2h') // expiration arbitraire de 2 heures
.sign(GITBOOK_VISITOR_SIGNING_KEY);
// Incluez un cookie `gitbook-visitor-token` contenant le JWT encodé dans votre
// réponse du gestionnaire de connexion
res.cookie(GITBOOK_VISITOR_COOKIE_NAME, gitbookVisitorJWT, {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
maxAge: 2 * 60 * 60 * 1000, // expiration arbitraire de 2 heures
domain: '.acme.org' //
});
// Reste de la logique de votre gestionnaire de connexion, y compris la redirection de l'utilisateur vers votre application
res.redirect('/'); // Exemple de redirection
}
Mis à jour
Ce contenu vous a-t-il été utile ?