Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

196
Views
El enrutador Nuxt3 no empuja al usuario a cierta página

Tengo dos middlewares:

  1. El middleware de la página de inicio de sesión empuja al usuario que ha iniciado sesión a su panel de control máximo permitido (ejemplo: usuario, propietario -> propietario / usuario -> usuario)
  2. El middleware del panel verifica las funciones de los usuarios y, si no hay permiso para visitar la página, se redirige al inicio de sesión (el trabajador será redirigido a la página de inicio de sesión si intenta ver el panel del propietario)

Para hacer que el cierre de sesión funcione, creé una ruta de consulta en el primer middleware (login?logout=true) y cuando el usuario quiere cerrar sesión, el tablero debe redirigirlo a la página de inicio de sesión con esta consulta, aunque no lo hace.

El caso es que cuando realizo la redirección, el método console.log(to) en el primer middleware me imprime:

fullPath: "/panel/propietario"

método de redirección

 this.$router.replace({ name: 'login', query: { 'logout': true } })

Primer software intermedio

 import { authoritiesRoutes } from "~~/middleware/panel" import { useAuthStore } from "~~/store/auth" export default defineNuxtRouteMiddleware(async ({ $pinia }, to, from) => { const token = useCookie('accessToken') console.log(to) if (to.query.logout === 'true') { token.value = null return navigateTo('/login') } if (token.value) { const store = useAuthStore($pinia) await store.retrieveUser(token.value) if (store.user != null) { const permissionLevel = store.getUser.authorities.length const routeName = authoritiesRoutes[permissionLevel] const route = '/' + routeName.replace('-', '/') return route; } } })

Segundo software intermedio

 import { useAuthStore } from '~~/store/auth' export enum authoritiesRoutes { 'panel' = 1, 'dashboard' = 2, 'dashboard-owner' = 3 } export default defineNuxtRouteMiddleware(async ({ $pinia, $event }, to) => { const token = useCookie('accessToken') if (!token.value) { return navigateTo('/login') } const store = useAuthStore($pinia) await store.retrieveUser(token.value) if (store.user == null) { return navigateTo('/login') } const permissionLevel = authoritiesRoutes[to.name]; if (store.getUser.authorities.length < permissionLevel) { return navigateTo("/login?error=you%20don't%20have%20permission%20to%20watch%20this%20page") } })
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Descubrí que (async ({ $pinia }, to, from) en el middleware debería ser (async (to, { $pinia }) También descubrí que el método useCookie solo funciona cuando se vuelve a cargar la página, así que hice mi tarea esto camino:

  1. Primer software intermedio
 export default defineNuxtRouteMiddleware(async (to, { $pinia }) => { var token = useCookie('accessToken') const store = useAuthStore($pinia) if (to.query.logout === 'true') { if (!token.value) { return navigateTo('/login') } token.value = null if (process.client) { store.logout() } } if (token.value) { await store.retrieveUser(token.value) if (store.user != null) { const permissionLevel = store.getUser.authorities.length const routeName = authoritiesRoutes[permissionLevel] const route = '/' + routeName.replace('-', '/') return route; } } })
  1. El segundo middleware permanece igual
  2. Login.vue ahora ha creado un método que se ve así:
 created () { if (this.$route.query.logout == 'true') { this.$router.go(0) } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!