vue.js 重定向时清除Nuxt Auth中的查询参数

xuo3flqw  于 2023-01-09  发布在  Vue.js
关注(0)|答案(1)|浏览(191)

当用户被重定向到一个定义的重定向路径(登录、主目录等)时,查询参数不会被删除。
例如-用户没有登录,并试图打开一些受保护的页面example.com/some-protected-page?test=query。然后用户将被重定向到登录页面。完整的路径将是example.com/sign-in?test=query,但我希望它是example.com/sign-in,即没有查询参数。
我知道我可以实现一个中间件来检查路由和清除参数,如果需要的话。但是我想知道有没有更优雅的方法来做到这一点。
下面是我的配置:

auth: {
    cookie: {
      options: {
        expires: 365,
        secure: process.env.NODE_ENV === 'production',
      },
    },
    strategies: {
      sign_up: {
        scheme: 'local',
        token: {
          property: 'apiKey.accessToken',
          global: true,
          maxAge: 60 * 60 * 24 * 30,
        },
        user: {
          property: '',
          autoFetch: true,
        },
        endpoints: {
          login: { url: '/ActivateUser', method: 'post' },
          logout: { url: '/SignOut', method: 'post' },
          user: { url: '/GetCurrentUser', method: 'post' },
        },
      },
      local: {
        scheme: 'local',
        token: {
          property: 'apiKey.accessToken',
          global: true,
          maxAge: 60 * 60 * 24 * 30,
        },
        user: {
          property: '',
          autoFetch: true,
        },
        endpoints: {
          login: { url: '/SignIn', method: 'post' },
          logout: { url: '/SignOut', method: 'post' },
          user: { url: '/GetCurrentUser', method: 'post' },
        },
      },
    },
    redirect: {
      login: '/sign-in',
      logout: '/sign-in',
      home: '/projects',
      callback: '/sign-in',
    },
    localStorage: false,
    resetOnError: true,
    fullPathRedirect: true,
    rewriteRedirects: false,
  },
hmtdttj4

hmtdttj41#

我有一个类似的情况,使用nuxt/auth.当我点击注销按钮,我被重定向到登录页面,但保留查询参数从上一页.像你一样,我想有它干净.
其思想是清除查询对象中的值。

this.$router.replace({ query: [] })
this.$auth.logout()

这将清除参数,然后重定向到登录页面。
例如:如果我们得到的url是https://myApp/hello?test=here the this.$router.replace({ query: [] }),将其转换为https://myApp/hello,然后nuxt/auth注销并重定向到我的登录页面。
你可以从这篇文章中检查与vue-router相关的答案。我从这里How to remove query from vue router?
如果用户试图访问一个受保护的页面,就像你提到的,我认为最好的方法是使用中间件,而不是这种方式。
希望这能有所帮助!

相关问题