繁体   English   中英

Nuxt.js auth 模块不会重定向登录用户

[英]Nuxt.js auth module does not redirect logged in user

经过身份验证的用户仍然可以访问/login页面。 如果我点击指向/login页面的链接,我将被重定向到另一个页面,该页面工作正常。 但是如果我手动输入/login到 URL,我仍然被带到/login页面,即使我已经登录。我想要实现的是,当用户登录时,他们应该被重定向到/retailer/account在页面上显示任何组件之前的/retailer/account页面(如果它们手动输入/login页面)。

我尝试使用beforeMount()函数, beforeCreate()函数,遵循auth: 'guest'文档auth: 'guest'中间件,但是它似乎没有任何效果,并且在页面完全呈现之前, loggedIn总是返回false

我的设置:

nuxt.config.js :

export default {
  mode: 'universal',
  target: 'static',
  auth: {
    cookie: {
      prefix: 'auth_'
    },
    // Options
    redirect: {
      login: '/login',
      logout: '/login',
      callback: false,
      home: '/retailer/account'
    },
    strategies: {
      local: {
        endpoints: {
          login: {
            url: '/auth/login',
            method: 'post',
            propertyName: 'access_token',
            credentials: true
          },
          logout: {
            url: '/auth/logout',
            method: 'post'
          },
          user: {
            url: '/auth/me',
            method: 'post',
            propertyName: '',
            credentials: false
          }
        },
        token: {
          required: true,
          type: 'Bearer',
          global: true
        },
        autoFetchUser: true
      }
    },
    preserveState: true,
    watchLoggedIn: true
  },
  router: {
    middleware: [
      'auth'
    ]
  }
}

layouts/default.vue

export default {
  auth: false
}

pages/retailer/account.vue

export default {
  middleware: 'auth'
}

pages/login.vue

export default {
  middleware: 'authenticated',
  auth: 'guest'
}

尝试了我能找到的各种中间件示例并制作了一些简单的重定向代码,但是,如前所述, app.$auth.loggedIn总是从服务器端返回false ,所以我永远不会被重定向。

middleware/authenticated.js

export default function ({ app, redirect }) {
  if (app.$auth.loggedIn) {
    return redirect(app.localePath({ name: 'index' }))
  }
}

稍后,当 Vue 对应用程序进行loggedIn时, loggedIn当然是true

任何想法我做错了什么? 任何指导将是一个巨大的帮助!

Nuxt auth 模块有一个中间件auth可以将未经auth验证的用户重定向到登录页面,并将经过身份验证的用户重定向到主页。
我看到您在 nuxt.config.js 中正确配置了 auth 中间件。
问题是 auth 中间件仅适用于 SSR 的服务器端。 但是您配置为生成静态网站。
您可以从 nuxt.config.js 中删除 line target: 'static',
或者通过这个问题找到一些静态站点身份验证的帮助: https : //github.com/nuxt/nuxt.js/issues/3023

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM