Estoy implementando una función de inicio de sesión en nuxt/auth
. Quiero implementar una función de inicio de sesión de invitado, pero cuando presiono el botón para iniciar sesión como invitado, no va a /search
, vuelve a user/login
. Me gustaría que no vaya a la página de inicio de sesión. La página especificada se muestra por un momento, pero user/login
se muestra inmediatamente.
Quiero ser redirigido a una página específica después de presionar el botón de inicio de sesión de invitado.
Páginas con un botón de inicio de sesión de invitado
<script> import * as url from '@/store/constants/url' export default { data ({ $config: { APP_NAME } }) { return { APP_NAME, } }, methods: { guest () {・・.then((response) => {・・this.$auth.loginWith('local', {data: { email: response.email, password: "xxxxxx" }}) }) this.$router.replace('/search') // I get back to the login page without going to /search. } } } </script>
nuxt.config.js
auth: { token: { global: true }, redirect: { login: '/user/login', logout: '/user/login', callback: false, home: '/' }, strategies: { local: { endpoints: { login: { url: '/api/v1/auth/sign_in', method: 'post', propertyName: 'token' }, logout: { url: '/api/v1/auth/sign_out', method: 'delete' }, user: false } } } },
Podría deberse a que this.$auth.loginWith
es asíncrono, lo que significa que this.$router.replace('/search')
se ejecutaría antes de que la función de inicio de sesión de autenticación haya regresado.
Podrías probar esto en su lugar:
.then((response) => { return this.$auth.loginWith('local', {data: { email: response.email, password: "xxxxxx" }}) }) .then() => { this.$router.replace('/search') }
Como se explica aquí y en muchas de mis respuestas anteriores con respecto a nuxt/auth , debería tener algo como esto.
<script> export default { methods: { async logMeIn() { const positiveResponseFromBackend = await this.$auth.loginWith('local', { data: { email: 'fancy email', password: 'cool password', }, }) if (positiveResponseFromBackend) { await this.$auth.setUser({ email: 'fancy email', // can of course be dynamic or fetched from your backend as a response password: 'cool password', // same here }) } }, }, } </script>
Esto lo iniciará con éxito a través del módulo de autenticación, por lo tanto, será redirigido automáticamente al valor de su home
como en el objeto de redirects
(no es necesario un router.push
).
nuxt.config.js
auth: { redirect: { home: '/search' }, },