diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue
index 4eba752..5f05406 100644
--- a/src/components/AppHeader/AppHeader.vue
+++ b/src/components/AppHeader/AppHeader.vue
@@ -169,6 +169,9 @@
     }
   },
   created() {
+    // Reset auth state to check if user is authenticated based
+    // on available browser cookies
+    this.$store.dispatch('authentication/resetStoreState');
     this.getHostInfo();
     this.getEvents();
   },
diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js
index 0dd616a..c42b9da 100644
--- a/src/store/modules/Authentication/AuthenticanStore.js
+++ b/src/store/modules/Authentication/AuthenticanStore.js
@@ -6,31 +6,39 @@
   namespaced: true,
   state: {
     authError: false,
-    cookie: Cookies.get('XSRF-TOKEN')
+    xsrfCookie: Cookies.get('XSRF-TOKEN'),
+    isAuthenticatedCookie: Cookies.get('IsAuthenticated')
   },
   getters: {
     authError: state => state.authError,
-    isLoggedIn: state => !!state.cookie,
-    token: state => state.cookie
+    isLoggedIn: state => {
+      return (
+        state.xsrfCookie !== undefined || state.isAuthenticatedCookie == 'true'
+      );
+    },
+    token: state => state.xsrfCookie
   },
   mutations: {
     authSuccess(state) {
       state.authError = false;
-      state.cookie = Cookies.get('XSRF-TOKEN');
+      state.xsrfCookie = Cookies.get('XSRF-TOKEN');
     },
     authError(state, authError = true) {
       state.authError = authError;
     },
-    logout() {
+    logout(state) {
       Cookies.remove('XSRF-TOKEN');
+      Cookies.remove('IsAuthenticated');
       localStorage.removeItem('storedUsername');
+      state.xsrfCookie = undefined;
+      state.isAuthenticatedCookie = undefined;
     }
   },
   actions: {
-    login({ commit }, auth) {
+    login({ commit }, { username, password }) {
       commit('authError', false);
       return api
-        .post('/login', { data: auth })
+        .post('/login', { data: [username, password] })
         .then(() => commit('authSuccess'))
         .catch(error => {
           commit('authError');
@@ -49,6 +57,11 @@
         .get(`/redfish/v1/AccountService/Accounts/${username}`)
         .then(({ data: { PasswordChangeRequired } }) => PasswordChangeRequired)
         .catch(error => console.log(error));
+    },
+    resetStoreState({ state }) {
+      state.authError = false;
+      state.xsrfCookie = Cookies.get('XSRF-TOKEN');
+      state.isAuthenticatedCookie = Cookies.get('IsAuthenticated');
     }
   }
 };
diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue
index 4d523de..dd0a415 100644
--- a/src/views/Login/Login.vue
+++ b/src/views/Login/Login.vue
@@ -117,7 +117,7 @@
       const username = this.userInfo.username;
       const password = this.userInfo.password;
       this.$store
-        .dispatch('authentication/login', [username, password])
+        .dispatch('authentication/login', { username, password })
         .then(() => {
           localStorage.setItem('storedLanguage', i18n.locale);
           localStorage.setItem('storedUsername', username);
