How to maintain login session active even after refreshing page in Vuejs?

Viewed 1113

signInMe() {
 
      this.$store.dispatch('setLoggedUser', true);
      this.$store.dispatch('setGenericAccessToken', response.data.access_token);

     
      this.errorMessage = "";
    }, (error) => {
      if (error) {
        this.errorMessage = error.response.data.message;
        this.isLoginFailed = true;
        this.emailFailureCount = this.emailFailureCount + 1;
       
      }
    }).catch(error => {})
},

logout() {
  localStorage.clear();
  localStorage.setItem('userType', "G");
  this.$store.dispatch('setLoggedUser', false);
  this.$store.dispatch('setAccessToken', '');
  this.$router.push('/')
  this.registeredUser = false;
},
<div class="myprofileroute" @click="logout">Logout</div>

After logging in successfully with my login credentials, I am able to redirect to some page, and if I click on logout, I am successfully logging out. The issue is even after login without clicking on Logout button, even if I refresh my page it is getting logged out.

1 Answers

Try to set the access token in your local/session storage, and then on each page load check whether it exists or not.

async login(){
  try{
    const userData = await axios.post('yourapi');
    const token = userData.access_token;
    localStorage.setItem('userData', userData);
    localStorage.setItem('accessToken', token);
    this.$router.push('/dashboard');
  }catch(err){
     //Handle errors
  }
}

Then maybe on your main layout or on Vue instance

mounted(){
  const userData = localStorage.getItem('userData');
  const accessToken = localStorage.getItem('accessToken');
  localStorage.setItem('userType', "G");
  this.$store.dispatch('setLoggedUser', userData);
  this.$store.dispatch('setAccessToken', accessToken);
}
Related