代币 vue js, jwt

Token vue js, jwt

提问人:Ata Forte 提问时间:11/14/2023 更新时间:11/14/2023 访问量:32

问:

我想问一下,如何使用 localstorage 中的令牌成为可用于所有功能的令牌。这个令牌来自 localstorage这个令牌之前来自 auth。 我希望使用 LocalStorage 中的令牌访问所有功能别名令牌 localStorage 是全局令牌。 这是我的登录表单代码:

async handleSubmit () {
      // const self = this
      console.log('on handleSubmit()')
      this.$refs.loginForm.validate(async (valid) => {
        if (this.loginLoading) return
        this.loginLoading = true
        try {
          if (valid) {
            const { userName, password } = this.form
            const res1 = await this.handleLogin({ userName, password })
            const res2 = await this.getUserInfo()
            console.log('>>> handleSubmit:33', { res1, res2 })
            console.log('>>> confighomename', this.$config.homeName)
            const tokenstring = JSON.stringify(res1.access_token)
            localStorage.setItem('token', tokenstring)

            this.$emit('on-login-success', {
              username: this.form.userName,
              password: this.form.password
            })

这个句柄登录代码:

async handleLogin ({ commit }, { userName, password }) {
      try {
        userName = userName.trim()

        const res = await RestClient.request({
          url: '/api/auth/login', method: 'POST', data: { username: userName, password }
        })

        const data = res.data

        commit('setTagNavList', [])
        commit('setToken', data.id)
        commit('setData', data)

        return data
      } catch (error) {
        console.error('>>> Error in handleLogin API: ', error)
        throw error
      }

那么我在哪里可以使用来自 localstorage 的令牌到每个功能?

来自 localstorage 的令牌取代了授权,可以在每个地方使用

vue.js JWT 代币

评论


答:

0赞 Ali Bahrami 11/14/2023 #1

要将存储在 localStorage 中的 JWT 令牌用作 Vue.js 应用程序中的全局令牌,首先您应该将令牌存储在某个位置(localStorage 或 cookie),然后通过拦截器将其附加到您的请求中。 因此,通常在登录后,您应该:

localStorage.setItem('token', JSON.stringify(res1.access_token));

然后(假设使用 Axios):

function getToken() {
  return JSON.parse(localStorage.getItem('token'));
}
axios.interceptors.request.use(config => {
  const token = getToken();
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

大多数情况下,您的令牌保留在本地存储中,并且您在拦截器中处理适当的逻辑。

评论

0赞 Ata Forte 11/14/2023
我在哪里使用该代码?在我的句柄中提交 ?