Как сделать параметры в пользовательской аутентификации динамическими c? - PullRequest
0 голосов
/ 18 июня 2020

Моя авторизация в nuxt.config. js вот так:

auth: {
    redirect: {
      login: '/',
      home: '/home',
      logout: '/'
    },
    strategies: {
      local: {
        endpoints: {
          login: {
            url: '/api/token',
            method: 'post',
            propertyName: 'response.token'
          },
          user: {
            url: '/api/references?number=1122334433221&name=chelsea&birthDate=1995-03-18',
            method: 'get',
            propertyName: 'data'
          },
          logout: {
            url: '/api/logout',
            method: 'post'
          }
        },
        tokenRequired: true,
        tokenType: 'Bearer '
      }
    },
    token: {
      name: 'token'
    },
    cookie: {
      name: 'token'
    }
}

В конечной точке пользователя я помещаю номер, имя и дату рождения статически. Как сделать динамический c? Таким образом, параметр берется из данных

data () {
    return {
      auth: {
        name: '',
        number: '',
        birthday: null
      }
    }
}

При отправке входа в систему он вызывает это:

methods: {
    submit () {
        this.$auth.loginWith('local', {
          data: {
            username: 'mycompany',
            password: '123123123'
          }
        }).then((resp) => {
          this.SET_IS_AUTH(true)
          this.$router.push('/home')
        }).catch(() => {
          console.log('error')
        })
    }
}

Обновление (Использование try catch)

methods: {
    ...mapMutations(['SET_IS_AUTH']),
    async fetchUserInfo () {
      const user = await this.$axios.$get(`/api/references?number=${this.auth.number}&name=${this.auth.name}&birthDate=${this.auth.birthday}`)
      this.$auth.setUser(user)
    },
    submit () {
      if (this.$refs.form.validate()) {
        try {
          this.$auth.loginWith('local', {
            data: {
              username: process.env.USERNAME,
              password: process.env.PASSWORD
            }
          }).then((resp) => {
            this.fetchUserInfo()
            this.SET_IS_AUTH(true)
            this.$router.push('/home')
          })
        } catch(err) {
          commit('SET_ERROR', err)
        }
      }
    }
}

1 Ответ

0 голосов
/ 18 июня 2020

Поскольку вы устанавливаете конечную точку пользователя в nuxt.config.js, вы не сможете динамически передавать URL-адрес конечной точки. Однако вы можете добиться результата, передав false конечной точке пользователя, например:

auth: {
    redirect: {
      login: '/',
      home: '/home',
      logout: '/'
    },
    strategies: {
      local: {
        endpoints: {
          login: {
            url: '/api/token',
            method: 'post',
            propertyName: 'response.token'
          },
          user: false,
          logout: {
            url: '/api/logout',
            method: 'post'
          }
        },
        tokenRequired: true,
        tokenType: 'Bearer '
      }
    },
    token: {
      name: 'token'
    },
    cookie: {
      name: 'token'
    }
}

Затем вы можете использовать axios, чтобы сделать запрос на получение данных пользователя вручную, передаваемых в ваш динамический c values, а затем установка пользовательских значений для модуля auth. Например, возможно, когда пользователь входит в систему, у вас может быть метод с именем fetchUserInfo, и он будет выглядеть так:

export default {
data () {
    return {
      auth: {
        name: '',
        number: '',
        birthday: null
      }
    }
},
methods: {
 async fetchUserInfo() {
    const user = await this.$axios.$get(`/api/references?number=${this.auth.number}&name=${this.auth.name}&birthDate=${this.auth.birthDate}`)
    // Sets the user info using the setUser method on the auth module
    this.$auth.setUser(user)
  }
}

}

Вот ссылка на использование метода setUser. Возможно, это поможет вам: https://auth.nuxtjs.org/api/auth.html#setuser -пользователь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...