当前位置:首页 > VUE

vue.js 实现登录

2026-01-21 16:12:47VUE

使用 Vue.js 实现登录功能

1. 创建 Vue 项目
使用 Vue CLI 初始化项目:

vue create login-app

选择默认配置或手动配置(如 Babel、Router、Vuex 等)。

2. 安装依赖
若需发送 HTTP 请求,安装 Axios:

npm install axios

3. 创建登录组件
src/components/Login.vue 中编写登录表单:

<template>
  <div>
    <form @submit.prevent="handleLogin">
      <input v-model="username" placeholder="用户名" />
      <input v-model="password" type="password" placeholder="密码" />
      <button type="submit">登录</button>
    </form>
    <p v-if="error">{{ error }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: "",
      password: "",
      error: "",
    };
  },
  methods: {
    async handleLogin() {
      try {
        const response = await axios.post("/api/login", {
          username: this.username,
          password: this.password,
        });
        localStorage.setItem("token", response.data.token);
        this.$router.push("/dashboard");
      } catch (err) {
        this.error = "登录失败,请检查用户名或密码";
      }
    },
  },
};
</script>

4. 配置路由
src/router/index.js 中设置登录路由:

vue.js 实现登录

import Vue from "vue";
import Router from "vue-router";
import Login from "../components/Login.vue";

Vue.use(Router);

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

5. 处理 API 请求
src/api/auth.js 中封装登录接口:

import axios from "axios";

export const login = (credentials) => {
  return axios.post("/api/login", credentials);
};

6. 状态管理(可选)
使用 Vuex 管理用户登录状态:

// src/store/index.js
export default new Vuex.Store({
  state: { user: null, token: null },
  mutations: {
    setUser(state, payload) {
      state.user = payload.user;
      state.token = payload.token;
    },
  },
  actions: {
    async login({ commit }, credentials) {
      const response = await login(credentials);
      commit("setUser", response.data);
    },
  },
});

7. 保护路由
通过路由守卫限制未登录访问:

vue.js 实现登录

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

8. 后端对接
确保后端提供 /api/login 接口,返回 JWT 或 session 凭证。

9. 样式优化
添加 CSS 或使用 UI 库(如 Element UI、Vuetify)美化表单。

10. 测试与调试
使用浏览器开发者工具检查网络请求,确保数据传递和状态更新正确。

关键注意事项

  • 安全性:密码传输需 HTTPS,避免明文存储。
  • Token 存储:使用 localStorageHttpOnly Cookie。
  • 错误处理:显示友好的错误提示,避免暴露敏感信息。

通过以上步骤可实现基础的 Vue.js 登录功能,根据实际需求扩展验证、第三方登录等特性。

标签: vuejs
分享给朋友:

相关文章

vue实现主题

vue实现主题

Vue 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-co…

利用vue 实现

利用vue 实现

以下是利用 Vue 实现常见功能的几种方法,分为不同场景和技术要点: 数据绑定与响应式更新 Vue 的核心特性是数据绑定,通过 v-model 实现双向绑定: <template>…

vue实现123456

vue实现123456

Vue 实现数字 123456 的显示 在 Vue 中显示数字 123456 非常简单,可以通过以下方法实现: 方法一:直接在模板中显示 <template> <div>…

vue 实现弹窗

vue 实现弹窗

Vue 实现弹窗的方法 在 Vue 中实现弹窗功能可以通过多种方式完成,以下是几种常见的方法: 使用组件和 v-if/v-show 控制显示 创建一个独立的弹窗组件,通过 v-if 或 v-show…

轮播vue实现

轮播vue实现

使用 Vue 实现轮播功能 基础轮播实现 安装依赖(如使用 Swiper): npm install swiper vue-awesome-swiper 组件代码示例: <templ…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…