nuxt中路由跳转

发布于 2022-09-11 23:18:43 字数 183 浏览 13 评论 0

问题描述:

我想在封装的axios里面的拦截器引用router,当用户没有登录的时候,使用router.push({path:"/login"})跳转到登录界面,但是此时显示router  undefined,我应该怎么导入router呢,import试过了不可以,希望大佬们能给予解答,thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏天碎花小短裙 2022-09-18 23:18:43

nuxt里使用路由拦截直接使用router.beforeEach或者使用组件独享守卫,都会有刷新白屏的问题。

用中间件是正确解决方法,支持异步操作。
在需要鉴权的页面添加配置项:
middleware: 'auth',

在middleware文件夹里添加auth中间件,进行相应拦截即可。
我的个人博客站点是用nuxt写的,管理员页面就用了一个拦截:
https://github.com/Lushenggan...
我的业务是,非管理员登陆进入管理页面则跳到首页:

import { checkAdmin } from '@/api/user'

export default ({ redirect }) => {
  return checkAdmin().then(res => {
    if (res.status !== 200 || !res.data.admin) {
      redirect('/')
    }
  }).catch(() => {
    redirect('/')
  })
}
篱下浅笙歌 2022-09-18 23:18:43

建议改用middleware,参考:
nuxt文档
参考代码:

export default function ({ store, redirect }) {
  // If the user is not authenticated
  if (!store.state.authenticated) {
    return redirect('/login')
  }
}

middleware文档

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文