Estoy usando nuxt-auth con la configuración de google oauth2, aquí está mi configuración nuxt.config.js :
auth: { scopeKey: 'scope', strategies: { google: { client_id: process.env.GOOGLE_KEY, codeChallengeMethod: '', scope: ['profile', 'email'], responseType: 'token id_token' } }, redirect: { login: '/login', logout: '/logout', home: '/', callback: '/welcome' } }, router: { middleware: ['auth'] },Utilizo este código para iniciar sesión.
this.$auth.loginWith('google')Quiero configurar un rol para el usuario (visitar la base de datos de la aplicación) después de un inicio de sesión exitoso, así que agregué este código a mi welcome.vue (página de devolución de llamada de oauth2)
<script> export default { mounted () { const user = this.$auth.user user['scope'] = 'some_role_from_db' this.$auth.setUser(user) } } </script>pero este código nunca se llama, porque la aplicación se redirige inmediatamente a la página que el usuario seleccionó antes de visitar la página de inicio de sesión (se muestra el marcado HTML de welcome.vue durante 1 segundo).
¿Cuál es la forma correcta de establecer algunos atributos en this.$auth.user inmediatamente después de iniciar sesión? ¿Hay alguna manera fácil de establecer el rol del usuario después de la autenticación OAUTH2?
los roles de usuario deben provenir del servidor y es incorrecto definirlo desde el lado del cliente, pero si eso es importante, puede hacerlo así:
this.$auth.loginWith('google').then(() => { const user = this.$auth.user user['scope'] = 'some_role_from_db' this.$auth.setUser(user) })He agregado esta sección a mi objeto de autenticación en nuxt.config.js
rewriteRedirects: false y entonces mi aplicación siempre me redirige a la URL de home , y en la página de inicio puedo acceder al objeto de autenticación como
<script> export default { mounted () { const user = this.$auth.user user['scope'] = 'some_role_from_db' this.$auth.setUser(user) } } </script>