J'essaie de me connecter au client Redis à partir du middleware Nuxt 3 mais la connexion n'est pas définie
P粉512526720
P粉512526720 2023-08-30 13:36:47
0
1
637
<p>J'essaie de me connecter à un serveur Redis pour obtenir les données de session du middleware nuxt 3 DefineNuxtRouteMiddleware sans succès. J'ai créé une connexion à Redis dans le plugin côté serveur et cela fonctionne pour tous mes points de terminaison API, mais cela ne semble pas fonctionner pour mon middleware rout-guards. J'essaie d'obtenir la connexion dans le code ci-dessous mais la connexion n'est pas définie. Ai-je tort de supposer que l'exécution côté serveur middleware devrait avoir accès à la connexion Redis</p> <pre class="brush:php;toolbar:false;">if (process.server) { let session = wait RedisUtil.getConnection.get(sessionID); }</pré> <p>Ce qui suit est redisUtil</p> <pre class="brush:php;toolbar:false;">class RedisUtil{ statique obtenir getConnection(){ renvoie cette.connexion ; } ensemble statique setConnection(connexion){ this.connection = connexion ; } connexion asynchrone statique (config) { laissez redis = createClient({ URL : 'redis://' + config.redis.user + ':' + config.redis.password + '@' + config.redis.host + ':' + config.redis.port }); redis.on('erreur', err => console.log('Erreur client Redis', err)); attendre redis.connect(); RedisUtil.setConnection = redis; console.log("Connecté à Redis"); } }</pré> <p>plugin redis chargé dans la configuration nitro</p> <pre class="brush:php;toolbar:false;">importer RedisUtil depuis '../utils/RedisUtil'; importer la configuration depuis "~/server.config" exporter asynchrone par défaut (NuxtApp) => attendre RedisUtil.connect(config); };</pré> <pre class="brush:php;toolbar:false;">nitro : { plugins : [ "~/server/plugins/redis.js" ], },</pré> <p>Comme mentionné ci-dessus, je peux accéder à la connexion Redis dans toutes les autres exécutions côté serveur, mais pas dans le middleware. Toute aide à ce sujet serait grandement appréciée. </p>
P粉512526720
P粉512526720

répondre à tous(1)
P粉098979048

Il semble que vous exécutiez uniquement la requête Redis côté serveur. Fait perdre le contexte au routage côté client lorsqu’il se produit.

export default defineNuxtRouteMiddleware(async (to, from) => {
  let session = '';
  if (process.server) {
    session = 'has some context';
  }

  // server: session = 'has some context'
  // client: session = ''
})
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal