当前位置:首页 > VUE

vue怎么实现登录功能

2026-02-21 07:24:23VUE

实现登录功能的基本步骤

安装必要的依赖,如axios用于发送HTTP请求,vue-router用于页面跳转管理。

npm install axios vue-router

创建登录页面组件

src/views目录下创建Login.vue文件,包含用户名和密码输入框及提交按钮。

<template>
  <div>
    <input v-model="username" placeholder="用户名" />
    <input v-model="password" type="password" placeholder="密码" />
    <button @click="handleLogin">登录</button>
  </div>
</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>

配置路由

src/router/index.js中设置登录页面的路由。

vue怎么实现登录功能

import Vue from 'vue'
import Router from 'vue-router'
import Login from '../views/Login.vue'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/login',
      name: 'Login',
      component: Login
    }
  ]
})

设置请求拦截器

src/main.js中配置axios全局实例和请求拦截器,用于自动添加认证令牌。

import axios from 'axios'

Vue.prototype.$axios = axios.create({
  baseURL: 'http://your-api-domain.com'
})

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

实现路由守卫

在路由配置中添加导航守卫,保护需要认证的路由。

vue怎么实现登录功能

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')
  if (to.name !== 'Login' && !isAuthenticated) {
    next({ name: 'Login' })
  } else {
    next()
  }
})

处理登出功能

在需要的地方添加登出方法,清除本地存储的令牌并重定向到登录页。

methods: {
  logout() {
    localStorage.removeItem('token')
    this.$router.push('/login')
  }
}

后端接口实现示例

Node.js Express后端处理登录请求的示例代码。

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

app.post('/api/login', (req, res) => {
  // 验证用户名和密码
  const token = jwt.sign({ userId: 123 }, 'your-secret-key', { expiresIn: '1h' })
  res.json({ token })
})

安全注意事项

确保使用HTTPS协议传输敏感数据,密码应当加密存储,JWT令牌设置合理的过期时间,考虑实现刷新令牌机制。

前端应对用户输入进行基本验证,后端必须对所有输入数据进行严格校验,防止SQL注入等攻击。敏感操作应当要求重新认证。

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

相关文章

vue实现名字查找功能

vue实现名字查找功能

Vue 实现名字查找功能 在 Vue 中实现名字查找功能,可以通过以下方法完成。这里假设有一个名字列表,需要根据用户输入的关键词进行筛选。 数据准备 在 Vue 的 data 中定义名字列表和搜索关…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现分类

vue实现分类

Vue实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现ide

vue实现ide

Vue 实现 IDE 的基本思路 使用 Vue 构建一个简易的集成开发环境(IDE)需要整合代码编辑器、文件管理、终端模拟等功能。以下是关键实现步骤和推荐工具。 核心功能模块 代码编辑器 使用…

vue实现popper

vue实现popper

Vue 实现 Popper 的方法 使用 Tippy.js 库 Tippy.js 是一个轻量级的 Popper.js 封装库,提供丰富的工具提示功能。安装 Tippy.js 及其 Vue 封装: n…