当前位置:首页 > VUE

vue商城登录实现

2026-01-19 06:56:26VUE

实现 Vue 商城登录功能

前端部分

创建登录组件src/views 目录下创建 Login.vue 文件,包含表单和基础样式:

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

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

配置路由src/router/index.js 中添加登录路由:

{
  path: '/login',
  name: 'Login',
  component: () => import('../views/Login.vue')
}

axios 拦截器src/utils/request.js 中配置请求拦截:

import axios from 'axios'

const instance = axios.create({
  baseURL: process.env.VUE_APP_API_URL
})

instance.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

export default instance

后端部分

Node.js 示例 创建基础登录接口:

const express = require('express')
const jwt = require('jsonwebtoken')
const app = express()

app.post('/api/login', (req, res) => {
  const { username, password } = req.body
  // 实际项目应查询数据库验证
  if (username === 'admin' && password === '123456') {
    const token = jwt.sign({ username }, 'secret_key', { expiresIn: '2h' })
    res.json({ token })
  } else {
    res.status(401).json({ error: '认证失败' })
  }
})

安全增强

前端验证 在提交前增加基础验证:

validateForm() {
  if (!this.form.username.trim()) {
    alert('请输入用户名')
    return false
  }
  if (this.form.password.length < 6) {
    alert('密码至少6位')
    return false
  }
  return true
}

后端防护

  • 使用 bcrypt 加密存储密码
  • 实现限流防止暴力破解
  • 设置 HTTPS 安全传输

状态管理

Vuex 集成src/store 中管理登录状态:

const store = new Vuex.Store({
  state: {
    user: null
  },
  mutations: {
    setUser(state, user) {
      state.user = user
    }
  }
})

登录成功后更新状态:

vue商城登录实现

this.$store.commit('setUser', res.data.user)

标签: 商城vue
分享给朋友:

相关文章

vue实现弹窗可切换

vue实现弹窗可切换

实现弹窗可切换的 Vue 方案 动态组件切换 通过 Vue 的 <component :is="currentComponent"> 动态加载不同弹窗组件,结合 v-if 控制显示状态。…

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…

vue jwt实现

vue jwt实现

Vue JWT 实现方法 安装依赖 确保项目中安装了 jsonwebtoken(后端)和 axios(前端)。若使用 Vue 3,可搭配 vue-router 和 pinia(或 vuex)管理状态。…

vue实现标注

vue实现标注

Vue 实现标注功能的方法 使用 Vue 实现标注功能可以通过多种方式实现,以下介绍几种常见的方法: 1. 使用 HTML5 Canvas 实现标注 Canvas 提供了强大的绘图能力,适合实现复…

vue实现cs程序

vue实现cs程序

Vue 实现 CS(客户端-服务器)程序 Vue 本身是一个前端框架,主要用于构建用户界面。要实现一个完整的 CS(客户端-服务器)程序,需要结合后端技术。以下是实现的基本思路和步骤: 前端部分(V…