Пользователь Nuxt.js auth установлен, но loggedIn по-прежнему false

js с Nuxt Auth и когда я хочу войти в систему. Пользователь не установлен и false

      const response = await this.$auth.loginWith('local', { data: {
   email: this.form.email.value,
   password: this.form.password.value,
} });
this.$auth.setUser(response.data.user);
this.$auth.strategy.token.set(response.data.jwt.access_token)
this.$auth.strategy.refreshToken.set(response.data.jwt.refresh_token)

поэтому я написал это, и после этого пользователь настроен, но loggedInвсе еще ложно. Вот мой nuxt.config.js.

      auth: {
    strategies: {
      local: {
        scheme: 'refresh',
        token: {
          property: 'access_token',
          maxAge: 1800,
          required: true,
          type: 'Bearer',
        },
        refreshToken: {
          property: 'refresh_token',
          data: 'refresh_token',
          maxAge: 60 * 60 * 24 * 30,
        },
        user: {
          property: 'user',
          autoFetch: true,
        },
        endpoints: {
          login: { url: '/login', method: 'post' },
          refresh: { url: '/refresh', method: 'post', propertyName: false },
          logout: { url: '/logout', method: 'post' },
          user: { url: '/refresh', method: 'post', propertyName: false },
        },
      },
    },
  },

Не могли бы вы мне помочь?

1 ответ

Решение

Я нашел решение своего ответа. Я написал свой scheme

      import { RefreshScheme } from '~auth/runtime'

export default class CustomScheme extends RefreshScheme {
  // Override `fetchUser` method of `local` scheme
  async fetchUser (endpoint) {

    this.options.endpoints.user = {
      ...this.options.endpoints.user,
      data: {
        token: this.$auth.strategy.refreshToken.get()
      }
    }

    // Token is required but not available
    if (!this.check().valid) {
      return
    }

    // User endpoint is disabled.
    if (!this.options.endpoints.user) {
      this.$auth.setUser({})
      return
    }

    // Try to fetch user and then set
    return this.$auth.requestWith(
      this.name,
      endpoint,
      this.options.endpoints.user
    ).then((response) => {
      const user = response.data.user

      // Transform the user object
      const customUser = {
        ...user,
        fullName: user.name,
        roles: ['user']
      }

      // Set the custom user
      // The `customUser` object will be accessible through `this.$auth.user`
      // Like `this.$auth.user.fullName` or `this.$auth.user.roles`
      this.$auth.setUser(customUser)

      return response
    }).catch((error) => {
      this.$auth.callOnError(error, { method: 'fetchUser' })
    })
  }
}

По-видимому, проблема заключалась в том, чтобы получить пользователя из propertyName. Я заменяю код своим ответом const user = response.data.user и теперь вроде работает :)

Другие вопросы по тегам