当前位置:首页 > VUE

vue登录页面实现

2026-01-17 00:21:04VUE

实现Vue登录页面的基本步骤

创建Login.vue文件作为登录组件,包含表单元素(用户名/密码输入框、提交按钮)。使用v-model双向绑定数据,通过@submit.prevent阻止默认表单提交行为。

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

数据绑定与验证

<script>部分设置响应式数据对象和验证逻辑。使用Vue的refreactive创建响应式表单对象,可结合vee-validate或自定义验证规则。

<script setup>
import { reactive } from 'vue'

const form = reactive({
  username: '',
  password: ''
})

const validate = () => {
  return form.username.length > 0 && form.password.length >= 6
}
</script>

提交逻辑与API交互

实现handleLogin方法,通过axiosfetch发送登录请求。处理成功/失败场景,保存token至localStorage或Vuex/Pinia store。

vue登录页面实现

const handleLogin = async () => {
  if (!validate()) return alert('验证失败')

  try {
    const res = await axios.post('/api/login', form)
    localStorage.setItem('token', res.data.token)
    router.push('/dashboard')
  } catch (err) {
    console.error('登录失败:', err)
  }
}

路由配置与导航守卫

router/index.js中配置登录路由,添加导航守卫实现未登录重定向。

const routes = [
  { path: '/login', component: Login },
  { path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } }
]

router.beforeEach((to) => {
  if (to.meta.requiresAuth && !localStorage.getItem('token')) {
    return '/login'
  }
})

样式优化与用户体验

添加CSS样式增强视觉效果,包括输入框焦点状态、错误提示、加载状态等。使用v-ifv-show控制加载动画显示。

vue登录页面实现

.login-container {
  max-width: 400px;
  margin: 0 auto;
}
input:focus {
  border-color: #42b983;
}
.error-message {
  color: red;
}

安全增强措施

实现CSRF防护(如添加token到请求头)、密码输入错误次数限制、验证码功能等安全措施。生产环境应启用HTTPS并设置HttpOnly的cookie。

axios.interceptors.request.use(config => {
  config.headers['X-CSRF-TOKEN'] = getCSRFToken()
  return config
})

第三方登录集成

支持OAuth2.0协议集成第三方登录(如Google/GitHub)。创建社交登录按钮,跳转至授权页面后处理回调。

<button @click="socialLogin('google')">Google登录</button>

以上实现可根据具体项目需求调整扩展,建议使用Vue 3的Composition API组织代码结构。

标签: 页面vue
分享给朋友:

相关文章

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <t…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用…

vue实现公告

vue实现公告

Vue 实现公告功能的方法 公告功能通常需要实现滚动展示、自动切换或固定显示的效果。以下是几种常见的实现方式: 使用 marquee 标签实现滚动公告 <template> <…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdown…

vue实现定位

vue实现定位

Vue 中实现定位的方法 在 Vue 中实现定位可以通过以下几种方式: 使用 CSS 定位 通过 CSS 的 position 属性实现定位,Vue 中可以直接在组件的 <style>…