ZBLOG

import { createRouter, createWebHashHistory } from 'vue-router' import permission from './permission' const routes = [ { path: '/login', name: 'Login', component: () => import('../views/login') }, { path: '/', name: '/', ...

要跳过登录页面,您需要在路由配置中实现一个全局守卫,检查用户的认证状态并决定是否重定向到登录页面。以下是一些示例代码,可以根据您的需求调整:

  1. 添加全局导航守卫:在创建路由后,添加一个 beforeEach 的钩子来处理路由的拦截。

  2. 模拟用户登录状态:可以通过某种方式(例如 Vuex 状态管理、localStorage等)来判断用户是否已登录。

下面是修改后的代码示例:

import { createRouter, createWebHashHistory } from 'vue-router'
import permission from './permission'

// 假设你有一个函数来检查用户是否已登录
const isAuthenticated = () => {
  // 这里可以根据实际情况返回 true 或 false
  return !!localStorage.getItem('user'); // 假设用 localStorage 存储用户信息
}

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/login')
  },
  {
    path: '/',
    name: '/',
    component: () => import('../layout'),
    redirect: '/users',
    children: [
      {
        path: 'users',
        name: 'users',
        component: () => import('@/views/users/index.vue')
      },
      {
        path: 'categories',
        name: 'categories',
        component: () => import('@/views/categories/index.vue')
      },
      {
        path: 'goods',
        name: 'goods',
        component: () => import('@/views/goods/index.vue')
      },
      {
        path: 'orders',
        name: 'orders',
        component: () => import('@/views/orders/index.vue')
      },
      {
        path: 'params',
        name: 'params',
        component: () => import('@/views/params/index.vue')
      },
      {
        path: 'reports',
        name: 'reports',
        component: () => import('@/views/reports/index.vue')
      },
      {
        path: 'rights',
        name: 'rights',
        component: () => import('@/views/rights/index.vue')
      },
      {
        path: 'roles',
        name: 'roles',
        component() { 
          return import('@/views/roles/index.vue') 
         }
       }
     ]
   }
]

const router = createRouter({
  history:createWebHashHistory(),
  routes
})

// 添加全局前置守卫
router.beforeEach((to, from, next) => {
  if (to.name !== "Login" && !isAuthenticated()) { // 如果不是去登录页且未认证,则重定向到登录页
    next({ name : "Login" });
  } else{
     next(); // 否则继续
   }
});

export function setupRoutes(app) {
  app.use(router)
  permission(router)
}

export default router;

注释说明:

  • isAuthenticated() 函数用于检查用户是否已经登录。
  • beforeEach 钩子中,我们检查目标路由是否为“Login”,如果不是并且未通过身份验证,则重定向到“Login”页面。如果已经通过身份验证或正在访问“Login”页面,则允许访问目标页面。

这样,就能够实现跳过未授权的访问,并引导未登录的用户到 login 页面。确保根据自己的业务逻辑和需求对 isAuthenticated 函数进行适当调整。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19605

分享:
扫描分享到社交APP
import('../views/login') }, { path: '/', name: '/', ...&appkey=&pic=&searchPic=true")' title="分享到新浪微博" class="weibo"> import('../views/login') }, { path: '/', name: '/', ...")' title="分享到QQ好友" class="qq"> import('../views/login') }, { path: '/', name: '/', ...")' title="分享到QQ空间" class="qqzone">
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?