当前位置:首页 > VUE

vue登录逻辑实现

2026-01-16 05:01:35VUE

Vue 登录逻辑实现

前端实现

表单设计与验证 创建登录表单组件,包含用户名和密码输入框。使用 Vue 的 v-model 进行双向数据绑定,结合 Vuelidate 或原生 HTML5 验证规则确保输入合法性。

<template>
  <form @submit.prevent="handleLogin">
    <input v-model="form.username" type="text" placeholder="用户名" required>
    <input v-model="form.password" type="password" placeholder="密码" required>
    <button type="submit">登录</button>
  </form>
</template>

状态管理 通过 Vuex 或 Pinia 管理用户登录状态,存储 token 和用户信息。定义 actions 处理异步登录请求。

// Pinia 示例
import { defineStore } from 'pinia';
export const useAuthStore = defineStore('auth', {
  state: () => ({
    user: null,
    token: localStorage.getItem('token') || null
  }),
  actions: {
    async login(credentials) {
      const response = await axios.post('/api/login', credentials);
      this.token = response.data.token;
      this.user = response.data.user;
      localStorage.setItem('token', this.token);
    }
  }
});

路由守卫 配置全局前置守卫,检查路由元信息中的 requiresAuth 字段,未登录用户跳转至登录页。

// router.js
router.beforeEach((to, from, next) => {
  const authStore = useAuthStore();
  if (to.meta.requiresAuth && !authStore.token) {
    next('/login');
  } else {
    next();
  }
});

后端交互

API 请求封装 使用 Axios 实例配置基础 URL 和请求拦截器,自动附加 token 到请求头。

vue登录逻辑实现

// api.js
const api = axios.create({
  baseURL: 'https://api.example.com'
});
api.interceptors.request.use(config => {
  const token = localStorage.getItem('token');
  if (token) config.headers.Authorization = `Bearer ${token}`;
  return config;
});

错误处理 捕获登录失败的异常,显示友好错误提示。处理 token 过期等场景。

try {
  await authStore.login(this.form);
  this.$router.push('/dashboard');
} catch (error) {
  alert(error.response?.data?.message || '登录失败');
}

安全增强

Token 刷新机制 实现无感刷新 token 的逻辑,当 access token 过期时自动使用 refresh token 获取新 token。

api.interceptors.response.use(
  response => response,
  async error => {
    if (error.response.status === 401 && !originalRequest._retry) {
      originalRequest._retry = true;
      const newToken = await refreshToken();
      localStorage.setItem('token', newToken);
      return api(originalRequest);
    }
    return Promise.reject(error);
  }
);

敏感操作保护 关键操作需要二次验证,如修改密码时要求重新输入当前密码。

vue登录逻辑实现

用户体验优化

加载状态 提交时显示加载动画,防止重复提交。

<button type="submit" :disabled="loading">
  {{ loading ? '登录中...' : '登录' }}
</button>

记住登录状态 通过 localStorage 持久化 token,或提供"记住我"选项延长会话有效期。

if (rememberMe) {
  localStorage.setItem('rememberToken', newToken);
} else {
  sessionStorage.setItem('sessionToken', newToken);
}

第三方登录 集成 OAuth2.0 实现 Google、GitHub 等第三方登录,使用专用按钮和授权流程。

// 初始化 Google OAuth
window.gapi.load('auth2', () => {
  window.gapi.auth2.init({
    client_id: 'YOUR_CLIENT_ID'
  });
});

标签: 逻辑vue
分享给朋友:

相关文章

vue 实现关闭

vue 实现关闭

Vue 实现关闭功能的方法 在Vue中实现关闭功能通常涉及组件销毁、模态框隐藏或路由跳转等场景。以下是几种常见实现方式: 销毁当前组件 使用v-if或v-show控制组件显示/隐藏,适用于局部组件:…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue 实现流程

vue 实现流程

Vue 实现流程 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是 Vue 实现的基本流程: 安装 Vue.js 通过 CDN 引入或使用 npm/yarn 安装:…

vue实现123456

vue实现123456

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