Javascript 如何向Vue.js AWS amplify应用程序添加身份验证持久性

Javascript 如何向Vue.js AWS amplify应用程序添加身份验证持久性,javascript,amazon-web-services,vue.js,vue-router,aws-amplify,Javascript,Amazon Web Services,Vue.js,Vue Router,Aws Amplify,我正在尝试为Vue.js应用程序构建AWS Amplify身份验证页面。到目前为止,我已经成功地使用aws amplify和aws amplify vue插件实现了登录/注销模块。我还在router.js中实现了一个路由保护,防止未经授权的访问。然而,我遇到了一个问题,在登录后,单击浏览器中的后退箭头返回到登录菜单,即使我仍然登录到应用程序。在以前使用Firebase构建的应用程序中,我通常会将.onAuthStatechanged()方法添加到main.js(入口点文件)以处理身份验证持久性,

我正在尝试为Vue.js应用程序构建AWS Amplify身份验证页面。到目前为止,我已经成功地使用
aws amplify
aws amplify vue
插件实现了登录/注销模块。我还在router.js中实现了一个路由保护,防止未经授权的访问。然而,我遇到了一个问题,在登录后,单击浏览器中的后退箭头返回到登录菜单,即使我仍然登录到应用程序。在以前使用Firebase构建的应用程序中,我通常会将
.onAuthStatechanged()
方法添加到main.js(入口点文件)以处理身份验证持久性,如下所示:

let app = ''

firebase.auth().onAuthStateChanged(() => {
  if (!app) {
    app = new Vue({
      router,
      store,
      render: h => h(App)
    }).$mount('#app')
  }
})
在AWS Amplify或
AWS Amplify vue
插件中是否有类似的方法?如果没有,是否有关于如何实现身份验证持久性的建议?是否有一种方法可以配置route guard来处理此问题?见下面我的路线守卫:

router.beforeResolve((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    let user;
    Vue.prototype.$Amplify.Auth.currentAuthenticatedUser().then(data => {
      if (data && data.signInUserSession) {
        user = data;
      }
      next()
    }).catch((e) => {
      next({
        path: '/'
      });
    });
  }
  next()
})
根据文档,您可以使用名为onAuthUIStateChanged的函数,该函数可在创建时调用,以检查AuthState是否为“signedIn”,然后将路由器推到主视图。这将是Login.Vue视图中的函数

import { AuthState, onAuthUIStateChange } from '@aws-amplify/ui-components`;

export default {
  name: 'Login',
  created() {
    onAuthUIStateChange((nextAuthState, authData) => {
      if (nextAuthState === AuthStatus.SignedIn) {
          console.log('user successfully signed in!');
          this.$router.push('/profile');
        }
      if (!authData) { console.log('user is not signed in');
        }
     });
   }

您分配
user=data
,但不使用
user
。我以前看过这段代码,但我仍然不明白为什么要这样做。