重定向到请求的URL(如果已在VueJS Router中授权)

时间:2018-08-06 21:01:09

标签: url vue.js authorization router

我正在尝试通过building this tutorial app了解VueJS路由器模型。如果您尝试打开像 https://example.com/meetups 这样的直接链接,则该应用会将您重定向到主页,即使您已经登录并获得授权。为什么会这样,以及如何打开请求的URL?

auth-guard.js

import {store} from '../store'

export default (to, from, next) => {
  if (store.getters.user) {
    next()
  } else {
    next('/signin')
  }
}

index.js

    Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/signup',
      name: 'Signup',
      component: Signup
    },
    {
      path: '/signin',
      name: 'Signin',
      component: Signin
    },
    {
      path: '/meetups',
      name: 'Meetups',
      component: Meetups,
      beforeEnter: AuthGuard
    },
    {
      path: '/meetup/new',
      name: 'CreateMeetup',
      component: CreateMeetup,
      beforeEnter: AuthGuard
    },
    {
      path: '/meetups/:id',
      name: 'Meetup',
      props: true,
      component: Meetup,
      beforeEnter: AuthGuard
    },
    {
      path: '/profile',
      name: 'Profile',
      component: Profile,
      beforeEnter: AuthGuard
    }
  ],
  mode: 'history'
})

1 个答案:

答案 0 :(得分:1)

如果商店class Program { static void Main(string[] args) { //Memory usage 7.1 MB Console.WriteLine("Hit enter to allocate"); Console.ReadKey(); byte[] data = new byte[1024*1024]; //Memory still 7.1 MB Console.WriteLine("Hit Enter to Fill with zeros!"); Console.ReadKey(); Array.Clear(data, 0, data.Length); //Memory now 8.1 MB Console.WriteLine("1MB filled, hit enter to exit"); Console.ReadKey(); } } 为空,则auth-guard.js会将某人重定向到登录页面。

商店用户何时更新?

main.js内部:

user

firebase.auth().onAuthStateChanged((user) => { if (user) { this.$store.dispatch('autoSignIn', user) } }) 方法是 async ,这意味着它可能在您要求浏览器转到受{{ 1}}。

如果打开新标签页或窗口并输入受保护页面的网址,通常会发生这种情况。 如果首先将网站完全加载到不受保护的页面上(例如,/ signin),然后用户尝试单击受保护的页面(例如,/ meetups),则此行为将正常工作。当用户单击链接时,很有可能onAuthStateChanged方法将返回并提交到商店(auth-guard.js),从而使onAuthStateChanged能够正确执行。

编辑

解决此问题的一种方法是仅在this.$store.dispatch('autoSignIn', user)这样返回用户后,实例化Vue应用程序:

main.js

onAuthStateChanged