当前位置:首页 > VUE

vue的路由实现登录

2026-02-24 13:52:44VUE

Vue 路由实现登录功能

路由配置

router/index.js 中配置登录路由和需要权限的路由。登录路由设置为公开访问,其他路由通过 meta 字段标记需要认证。

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: () => import('@/views/Login.vue'),
    meta: { requiresAuth: false }
  },
  {
    path: '/dashboard',
    name: 'Dashboard',
    component: () => import('@/views/Dashboard.vue'),
    meta: { requiresAuth: true }
  }
]

路由守卫

使用全局前置守卫 beforeEach 检查路由是否需要认证。未登录用户尝试访问受保护路由时,重定向到登录页。

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

登录逻辑

在登录组件中处理用户认证。成功登录后存储 token 并跳转到目标页面。

methods: {
  async handleLogin() {
    try {
      const response = await loginApi(this.form)
      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      console.error('Login failed', error)
    }
  }
}

注销处理

清除本地存储的认证信息并重定向到登录页。

methods: {
  handleLogout() {
    localStorage.removeItem('token')
    this.$router.push('/login')
  }
}

动态路由

对于更复杂的权限系统,可以根据用户角色动态添加路由。

const adminRoutes = [
  {
    path: '/admin',
    component: () => import('@/views/Admin.vue')
  }
]

function addDynamicRoutes() {
  const role = getUserRole()
  if (role === 'admin') {
    router.addRoutes(adminRoutes)
  }
}

vue的路由实现登录

标签: 路由vue
分享给朋友:

相关文章

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue实现付款

vue实现付款

Vue 实现付款功能 在 Vue 中实现付款功能通常需要集成第三方支付网关(如支付宝、微信支付、Stripe 等)。以下是常见的实现方法: 集成支付宝/微信支付 安装必要的依赖(如 axios 用…

实现vue模版

实现vue模版

Vue 模板的基本结构 Vue 模板基于 HTML 语法,通过 Vue 的指令和插值实现动态渲染。以下是一个基础模板示例: <template> <div id="…

vue实现管道

vue实现管道

Vue 中实现管道(Pipe)功能 在 Vue 中可以通过过滤器(Filters)或计算属性(Computed Properties)实现类似管道的功能,将数据经过多个处理步骤后输出。 使用过滤器…

vue实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &l…

vue实现定位

vue实现定位

Vue 中实现定位的方法 在 Vue 中实现定位可以通过以下几种方式: 使用 CSS 定位 通过 CSS 的 position 属性实现定位,Vue 中可以直接在组件的 <style>…