当前位置:首页 > VUE

vue登陆的实现

2026-02-22 15:40:24VUE

实现 Vue 登录功能

前端实现

  1. 创建登录表单组件
    使用 Vue 的单文件组件(SFC)创建一个登录表单,包含用户名和密码输入框,以及提交按钮。

    <template>
      <form @submit.prevent="handleLogin">
        <input v-model="username" type="text" placeholder="用户名" />
        <input v-model="password" type="password" placeholder="密码" />
        <button type="submit">登录</button>
      </form>
    </template>
    
    <script>
    export default {
      data() {
        return {
          username: '',
          password: ''
        }
      },
      methods: {
        async handleLogin() {
          try {
            const response = await this.$axios.post('/api/login', {
              username: this.username,
              password: this.password
            })
            localStorage.setItem('token', response.data.token)
            this.$router.push('/dashboard')
          } catch (error) {
            console.error('登录失败:', error)
          }
        }
      }
    }
    </script>
  2. 路由配置
    使用 Vue Router 配置登录页和受保护的路由。

    import Vue from 'vue'
    import Router from 'vue-router'
    import Login from './views/Login.vue'
    import Dashboard from './views/Dashboard.vue'
    
    Vue.use(Router)
    
    const router = new Router({
      routes: [
        { path: '/login', component: Login },
        { path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } }
      ]
    })
    
    router.beforeEach((to, from, next) => {
      if (to.meta.requiresAuth && !localStorage.getItem('token')) {
        next('/login')
      } else {
        next()
      }
    })
    
    export default router

后端实现

  1. 创建登录 API 端点
    使用 Node.js 和 Express 创建一个简单的登录 API。

    const express = require('express')
    const jwt = require('jsonwebtoken')
    const app = express()
    
    app.use(express.json())
    
    app.post('/api/login', (req, res) => {
      const { username, password } = req.body
      if (username === 'admin' && password === 'password') {
        const token = jwt.sign({ username }, 'secret_key', { expiresIn: '1h' })
        res.json({ token })
      } else {
        res.status(401).json({ error: '用户名或密码错误' })
      }
    })
    
    app.listen(3000, () => console.log('服务器运行在 3000 端口'))
  2. 验证 Token 中间件
    创建一个中间件来验证请求中的 JWT Token。

    function authenticateToken(req, res, next) {
      const token = req.headers['authorization']
      if (!token) return res.sendStatus(401)
    
      jwt.verify(token, 'secret_key', (err, user) => {
        if (err) return res.sendStatus(403)
        req.user = user
        next()
      })
    }

安全注意事项

  1. 使用 HTTPS
    确保在生产环境中使用 HTTPS 来加密传输的数据。

  2. 存储 Token
    避免将 Token 存储在容易受到 XSS 攻击的地方,如普通的 Cookie 或 localStorage。考虑使用 HttpOnly Cookie。

  3. 密码哈希
    后端应对用户密码进行哈希处理,使用 bcrypt 等库。

    const bcrypt = require('bcrypt')
    const saltRounds = 10
    const hashedPassword = await bcrypt.hash(password, saltRounds)
  4. 防止暴力破解
    实现登录尝试限制机制,防止暴力破解攻击。

vue登陆的实现

标签: vue
分享给朋友:

相关文章

vue前端实现搜索

vue前端实现搜索

实现搜索功能的基本方法 在Vue中实现搜索功能通常涉及以下几个关键步骤,结合数据绑定、计算属性和方法调用来动态过滤和显示结果。 数据绑定与输入处理 使用v-model双向绑定搜索输入框的值,监听用…

vue表单实现搜索

vue表单实现搜索

实现Vue表单搜索功能 在Vue中实现表单搜索功能通常涉及表单绑定、事件处理和搜索逻辑。以下是具体实现方法: 数据绑定与表单结构 使用v-model实现表单与Vue数据的双向绑定: <tem…

vue实现轮询

vue实现轮询

实现轮询的基本方法 在Vue中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr…

vue实现标签

vue实现标签

Vue 实现标签的方法 在 Vue 中实现标签功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 动态组件可以根据不同的条件渲染不同的标签内容。通过 :is 属性动态绑定组件名,实现标…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…