当前位置:首页 > VUE

前端登录功能实现vue

2026-01-20 20:14:07VUE

前端登录功能实现(Vue)

环境准备

确保已安装Vue CLI或Vite作为项目脚手架工具,安装依赖包如vue-router和axios:

npm install vue-router axios

路由配置

router/index.js中配置登录路由,启用路由守卫控制访问权限:

前端登录功能实现vue

import { createRouter, createWebHistory } from 'vue-router'
import Login from '../views/Login.vue'

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: Login,
    meta: { requiresAuth: false }
  }
]

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

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

登录组件

创建Login.vue组件,包含表单验证和提交逻辑:

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

<script>
import { reactive } from 'vue'
import axios from 'axios'
import { useRouter } from 'vue-router'

export default {
  setup() {
    const form = reactive({
      username: '',
      password: ''
    })
    const router = useRouter()

    const handleSubmit = async () => {
      try {
        const res = await axios.post('/api/login', form)
        localStorage.setItem('token', res.data.token)
        router.push('/dashboard')
      } catch (error) {
        alert('登录失败: ' + error.response.data.message)
      }
    }

    return { form, handleSubmit }
  }
}
</script>

状态管理(可选)

对于复杂应用,建议使用Pinia管理登录状态:

前端登录功能实现vue

// stores/auth.js
import { defineStore } from 'pinia'

export const useAuthStore = defineStore('auth', {
  state: () => ({
    user: null,
    token: localStorage.getItem('token') || null
  }),
  actions: {
    async login(credentials) {
      const res = await axios.post('/api/login', credentials)
      this.token = res.data.token
      localStorage.setItem('token', this.token)
    },
    logout() {
      this.token = null
      localStorage.removeItem('token')
    }
  }
})

安全增强

实现以下安全措施:

  • 使用HTTPS传输
  • 添加CSRF Token防护
  • 设置HTTP-only的Cookie存储token
  • 密码字段进行前端加密处理(如bcryptjs)

错误处理

完善异常捕获机制,包括网络错误、服务器返回错误等:

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

标签: 功能vue
分享给朋友:

相关文章

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Comp…

vue 实现全屏

vue 实现全屏

Vue 实现全屏功能 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 完成。以下是一个完整的实现方案: 安装依赖(可选) 如果需要跨浏览器兼容性更好,可以安装…

vue实现点击下载

vue实现点击下载

使用 <a> 标签实现下载 在 Vue 中可以通过动态生成 <a> 标签实现文件下载。适用于已知文件 URL 的场景。 <template> <butt…

vue实现语言切换

vue实现语言切换

Vue 实现语言切换的方法 使用 vue-i18n 插件 安装 vue-i18n 插件: npm install vue-i18n 在项目中配置 vue-i18n: import Vue from…

vue怎么实现粘贴

vue怎么实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见实现方式: 监听 input/textarea 的粘贴事件 通过 @paste 事件监听粘贴…

vue实现直播

vue实现直播

Vue 实现直播的基本方法 使用 Vue 实现直播功能通常需要结合 WebRTC、RTMP 或其他流媒体协议。以下是几种常见的实现方式: WebRTC 实现 WebRTC 适合低延迟的实时通信场景。…