当前位置:首页 > VUE

vue实现动态登录

2026-02-20 07:49:15VUE

Vue 实现动态登录方案

基础登录表单实现

使用 Vue 的 v-model 实现表单数据双向绑定,创建包含用户名和密码输入框的登录组件。示例代码:

<template>
  <form @submit.prevent="handleLogin">
    <input v-model="form.username" placeholder="用户名"/>
    <input v-model="form.password" type="password" placeholder="密码"/>
    <button type="submit">登录</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    async handleLogin() {
      try {
        const res = await axios.post('/api/login', this.form)
        localStorage.setItem('token', res.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        alert('登录失败')
      }
    }
  }
}
</script>

动态验证码集成

通过后端接口获取动态验证码图片,并添加刷新功能。在 data 中添加验证码相关字段:

vue实现动态登录

data() {
  return {
    captcha: '',
    captchaImage: '',
    form: {
      // ...原有字段
      captcha: ''
    }
  }
}

路由守卫配置

在路由配置中添加全局前置守卫,实现未登录跳转:

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

状态管理集成

使用 Vuex 集中管理登录状态,创建 auth 模块:

vue实现动态登录

const auth = {
  state: {
    token: localStorage.getItem('token') || '',
    user: null
  },
  mutations: {
    SET_TOKEN(state, token) {
      state.token = token
      localStorage.setItem('token', token)
    },
    CLEAR_AUTH(state) {
      state.token = ''
      localStorage.removeItem('token')
    }
  },
  actions: {
    login({ commit }, credentials) {
      return axios.post('/api/login', credentials)
        .then(res => {
          commit('SET_TOKEN', res.data.token)
          return res
        })
    }
  }
}

响应式权限控制

结合动态路由实现权限控制,在登录成功后根据用户角色加载对应路由:

async function loadRoutes(role) {
  const routes = await import(`@/router/${role}Routes.js`)
  router.addRoutes(routes.default)
}

安全增强措施

实现以下安全功能:

  • 登录请求防抖处理
  • 密码输入错误次数限制
  • 敏感操作二次验证
  • JWT 自动刷新机制

标签: 动态vue
分享给朋友:

相关文章

vue实现摘要

vue实现摘要

Vue 实现摘要的方法 在 Vue 中实现文本摘要功能通常涉及截取文本的前部分内容并添加省略号。可以通过计算属性、过滤器或自定义指令来实现。 计算属性实现 在 Vue 组件中定义一个计算属性,用于截…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue实现fadein

vue实现fadein

Vue 实现 FadeIn 效果 在 Vue 中实现淡入(FadeIn)效果可以通过 CSS 过渡、动画或第三方库实现。以下是几种常见方法: 使用 CSS 过渡 通过 Vue 的过渡系统结合 CSS…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue实现白板

vue实现白板

Vue实现白板功能 使用Vue实现白板功能可以通过HTML5的Canvas API结合Vue的响应式特性来完成。以下是实现白板功能的关键步骤: 安装依赖 在Vue项目中安装必要的依赖,如vue-dr…