Es wird versucht, über die Nuxt 3-Middleware eine Verbindung zum Redis-Client herzustellen, aber die Verbindung ist nicht definiert
P粉512526720
P粉512526720 2023-08-30 13:36:47
0
1
616
<p>Ich versuche erfolglos, eine Verbindung zu einem Redis-Server herzustellen, um Sitzungsdaten von der Nuxt 3 DefineNuxtRouteMiddleware-Middleware abzurufen. Ich habe im serverseitigen Plugin eine Verbindung zu Redis erstellt und es funktioniert für alle meine API-Endpunkte, aber es scheint nicht für meine Rout-Guards-Middleware zu funktionieren. Ich versuche, die Verbindung im folgenden Code herzustellen, aber die Verbindung ist nicht definiert. Liege ich falsch in der Annahme, dass die serverseitige Ausführung der Middleware Zugriff auf die Redis-Verbindung haben sollte</p> <pre class="brush:php;toolbar:false;">if (process.server) { let session = waiting RedisUtil.getConnection.get(sessionID); }</pre> <p>Das Folgende ist redisUtil</p> <pre class="brush:php;toolbar:false;">class RedisUtil{ statisch getgetConnection(){ return this.connection; } statische Menge setConnection(connection){ this.connection = Verbindung; } statische asynchrone Verbindung (config) { let redis = createClient({ URL: 'redis://' + config.redis.user + ':' + config.redis.password + '@' + config.redis.host + ':' + config.redis.port }); redis.on('error', err => console.log('Redis Client Error', err)); Warten Sie auf redis.connect(); RedisUtil.setConnection = redis; console.log("Mit Redis verbunden"); } }</pre> <p>Redis-Plugin in Nitro-Konfiguration geladen</p> <pre class="brush:php;toolbar:false;">import RedisUtil from '../utils/RedisUtil'; Konfiguration aus „~/server.config“ importieren; Standardmäßig asynchron exportieren (NuxtApp) => Warten Sie auf RedisUtil.connect(config); };</pre> <pre class="brush:php;toolbar:false;">nitro: { Plugins: [ "~/server/plugins/redis.js" ], },</pre> <p>Wie oben erwähnt, kann ich in allen anderen serverseitigen Ausführungen auf die Redis-Verbindung zugreifen, jedoch nicht in der Middleware. Jede Hilfe hierzu wäre sehr dankbar. </p>
P粉512526720
P粉512526720

Antworte allen(1)
P粉098979048

看来您只在服务器端部分运行 Redis 请求。当客户端路由发生时使其失去上下文。

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

  // server: session = 'has some context'
  // client: session = ''
})
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage