Le middleware serveur/client Nuxt3 SSR entraîne le rendu inattendu de la page protégée
<p>Je développe une application Nuxt SSR avec authentification simple. </p>
<p>J'ai un <code>middleware d'authentification</code> pour sécuriser tous les itinéraires requis pour la connexion. </p>
<pre class="brush:php;toolbar:false;">export par défaut finishNuxtRouteMiddleware(async (to, from) => {
si (processus.client) {
const authStore = useAuthStore()
si (!authStore.check) {
authStore.returnUrl = vers.fullPath
useRouter().push('/admin/login')
}
}
})</pré>
<p>Ce middleware vérifie les cookies de navigateur stockés et doit donc être exécuté sur le client</p>
<pre class="brush:php;toolbar:false;">export const useAuthStore = definitionStore('auth', () => {
jeton const = ref(useStorage('token', null))
const check = calculated(() => token.value !== non défini)
....</pré>
<p>Pour autant que je sache, le middleware SSR s'exécute généralement d'abord sur le serveur, puis sur le client. </p>
<p>Le problème est lorsque j'applique ce logiciel d'authentification pour protéger les pages qui nécessitent une connexion</p>
<pre class="brush:php;toolbar:false;"><configuration du script lang="ts">
définirPageMeta({
middleware : ['admin-auth'],
// ou middleware : 'auth'
})
</script>
<modèle>
<div class="flex justifier-centre éléments-centre h-écran p-3">admin 1</div>
</template></pre>
<p>Le middleware s'exécutera d'abord côté serveur, provoquant le rendu involontaire de la page, puis déclenchera le client avec une logique et le redirigera vers la page de connexion. C'est très moche. Vous pouvez le voir en action. </p>
<p> Quelqu'un a-t-il rencontré ce problème ? Toute solution serait très appréciée. Mon exigence est d'utiliser SSR pour cette application. </p>
<heure />
<p>Il y a également un petit problème. Lors de l'exécution de SSR et de l'actualisation de la page, un certain style scintille. Je ne sais pas pourquoi. J'utilise ce modèle https://github.com/sfxcode/nuxt3-primevue-starter</p>
<heure />
<p>Je cherchais une solution depuis plusieurs jours@_@</p>