浏览器刷新后 Nuxt auth 用户重置

Posted

技术标签:

【中文标题】浏览器刷新后 Nuxt auth 用户重置【英文标题】:Nuxt auth user reset after browser refresh 【发布时间】:2021-10-24 15:08:59 【问题描述】:

我正在构建一个包含用户登录和注册信息的应用。我使用 nuxt/auth 模块来处理身份验证。每当用户登录时,状态更改为 true 没有问题。我遇到的唯一问题是,当我调用 set user method 时,用户信息注册成功,但是每当我刷新浏览器时,我都会丢失用户数据,即使它首先设置成功。

我的 nuxt 身份验证模块的 nuxt.js 配置

auth: 
        strategies: 
          local: 
            token: 
              property: "token",
              global: true,
            ,
            redirect: 
                "login": "/account/login",
                "logout": "/",
                "home": "/page/ajouter-produit",
                "callback": false
            ,
            endpoints: 
              login:  url: "http://localhost:5000/login", method: "post" ,
              logout: false, //  we don't have an endpoint for our logout in our API and we just remove the token from localstorage
              user:false
            
          
        
      ,

我的注册/登录组件

        async typeForm(e) 
            this.typesubmit = true;
            // stop here if form is invalid
            this.$v.$touch();
            if (this.$v.typeform.$anyError) 
                return;
            
            const user = await axios.post(`$baseUrlregister`,
                username:this.typeform.username,
                password:this.typeform.password,
                email:this.typeform.email,
                tel:this.typeform.tel,
                adresse:this.typeform.adresse,
                store:this.typeform.store,
            )
            .then(response => 
                console.log(response.data)
                return response.data.user;
            ).catch( (error) => 
                this.error = ''
                this.error = error.response.data
            )

            if(user)
                let loginData = email:this.typeform.email,  password:this.typeform.password 
                const response = await this.$auth.loginWith('local',  data: loginData)
                .then(response => 
                this.$auth.setUser(response.data.user) // the user is set without a problem, everything works fine.
                return response.data;
                ).catch( (error) => 
                    this.errors = error.response.data
                    console.log(error.response)
                )
            
            
        

当我首先通过控制台记录状态和用户时,一切正常

  console.log(this.$store.state.auth.user) // logs all user data i get from the api call. but when i refresh i get an empty object 
  console.log(this.$store.state.auth.loggedIn) // logs true , and even after i refresh it's still true

请帮忙

【问题讨论】:

【参考方案1】:

问题解决了。我所做的是添加到我的登录功能

this.$auth.$storage.setUniversal('user', response.data.user, true)

像魅力一样工作。

【讨论】:

以上是关于浏览器刷新后 Nuxt auth 用户重置的主要内容,如果未能解决你的问题,请参考以下文章

Nuxt JS 中的基本身份验证

Nuxt,Vuex 数据在浏览器刷新时清除

Nuxt Firebase 身份验证中间件

Nuxt Auth 如何从数据库中删除刷新令牌?

Nuxt.js + Auth(jwt 刷新令牌)

令牌过期时,Nuxt Auth Module c5 不会自动刷新令牌