当前位置:首页 > 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 中配置请求拦截:

vue商城登录实现

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: '认证失败' })
  }
})

安全增强

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

vue商城登录实现

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
    }
  }
})

登录成功后更新状态:

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

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

相关文章

vue组件的实现

vue组件的实现

Vue 组件的实现方式 Vue 组件可以通过多种方式实现,以下是常见的几种方法: 单文件组件 (SFC) 使用 .vue 文件,包含模板、脚本和样式三部分: <template>…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(…

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的…

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.de…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…

vue实现抽奖

vue实现抽奖

Vue 实现抽奖功能 基本抽奖逻辑 创建一个Vue组件,包含奖品列表、抽奖按钮和结果显示区域。使用随机数生成器选择奖品。 <template> <div> <…