登录功能实现

  • 写在前面
  • 登录概述
    • 登录业务流程
    • 登录业务的相关技术点
      • 登录---token原理分析
      • 登录功能实现
        • 登录页面的布局
        • 在components文件下创建一个vue文件
        • 配置路由(并添加路由重定向)
        • 页面编写
          • 完成登录框居中
          • 添加一个登录图标
          • 登录表单的布局
          • 登录表单的数据绑定
          • 登录表单的验证规则
          • 登录表单的重置
          • 登录预验证
          • 登录组件配置弹窗提示
          • 登录成功后的行为
            • 1.将登录之后的token,保存到客户端的sessionStorage中
            • 2.通过编程式导航跳转到后台主页,路由地址是/home

写在前面

vue文件最后要空一行,不然会报错,真的奇葩…

登录概述

登录业务流程

  • 1.在登录页面输入用户名和密码
  • 2.调用后台接口进行验证
  • 3.通过验证之后,根据后台得响应状态跳转到项目主页

登录业务的相关技术点

  • http是无状态的
  • 通过cookie在客户端记录状态
  • 通过session在服务器端记录状态
  • 通过token方式维持状态

这里要清楚哦!

登录—token原理分析

  • 1.登录页面输入用户名和密码进行登录
  • 2.服务器验证通过之后生成该用户的token并返回
  • 3.客户端存储该token
  • 4.后续所有的请求都携带该token发送请求
  • 5.服务器端验证token是否通过

登录功能实现

登录页面的布局

通过Element-UI组件实现布局

  • el-form
  • el-form-item
  • el-input
  • el-button
  • 字体图标

在vscode打开终端ctrl+~

git status 查看当前git状态
git checkout -b login 创建一个新的分支叫login
git branch 切换分支


在vue ui中启动!


终端指令npm run serve也可以运行!

在components文件下创建一个vue文件

import Vue from 'vue'
import VueRouter from 'vue-router'
import login from './components/login.vue'
Vue.use(VueRouter)const routes = [{path:'/login',component:login}
]const router = new VueRouter({routes
})export default router

配置路由(并添加路由重定向)

const router = new VueRouter({routes: [{path: '/',redirect: '/login'},{path: '/login',component: login}]
})

一定要注意空格,不然会报错,可恶啊!

页面编写

先给一个全局样式表

/* 全局样式表 */
html,
body,
#app{height: 100%;margin: 0;padding: 0;
}

并在main.js中导入

import './assets/css/global.css'

完成登录框居中

注意:translate 进行移动,完成真正的居中

.login_box{width: 450px;height: 300px;background-color: #fff;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%);
}

添加一个登录图标
   .avatar_box{height: 130px;width: 130px;border: 1px solid #eee;border-radius: 50%;padding: 10px;box-shadow: 0px 0px 10px #ddd;position: absolute;left: 50%;transform: translate(-50%,-50%);background-color: #fff;img{width: 100%;height: 100%;border-radius: 50%;background-color: #eee;}}

登录表单的布局

通过Element-UI组件实现布局

  • el-form
  • el-form-item
  • el-input
  • el-button
  • 字体图标

elements组件库网页
在网站里面可以找到一些可以使用的基础模板代码

导入组件

import Vue from 'vue'
import { Button, Form, FormItem, Input } from 'element-ui'//分开import会报错Vue.use(Button)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Input)

中间form和button都是直接到上面的组件库里面去找的

中间一些代码不贴了,比较枯燥呀

特别地,我们的小图标是从阿里的icon库里面下载的

具体用法见以前写得一篇博客
阿里巴巴icon图标尽在掌握(前端如何引入icon库,美丽图标随你处置T.T)

登录表单的数据绑定
  • 1.:model=“loginForm” 绑定一个表单
  • 2.在form-item中用v-model双向绑定数据对象
  • 3.在export default中data() return表单数据
登录表单的验证规则
  • 1.:rules="ruleForm"绑定一个规则
  • 2.在form-item中用prop属性设置为需要校验的字段名
      // 这是表单的验证规则对象loginFormRules: {// 验证用户名是否合法username: [{ required: true, message: '请输入登录名称', trigger: 'blur' },{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }],// 验证密码是否合法password: [{ required: true, message: '请输入登录密码', trigger: 'blur' },{ min: 6, max: 15, message: '长度在 6 到 15 个字符', trigger: 'blur' }]}

登录表单的重置
  • 1.在el-form中添加ref引用名称,以便获取表单
  • 2.在方法中添加方法,用this.$refs.loginFormRef.resetFields()来重置表单,注意表单的值会变为data里面设置的初值
登录预验证
  • 1.同样的this.$refs.loginFormRef.validate()
  • 2.配置axios
import axios from 'axios'
// 配置请求的根路径
axios.defaults.baseURL = 'https://127.0.0.1:8888/api/private/v1/'
Vue.prototype.$http = axios
  • 3.如下获取查询的结果
    使用async 和await要获取返回结果
      this.$refs.loginFormRef.validate(async valid => {if (!valid) returnconst { data: res } = await this.$http.post('login', this.loginForm)console.log(res)if (res.meta.status !== 200) return console.log('登录失败')console.log('登录成功')})
登录组件配置弹窗提示
  • 1.在element.js中引入message并挂载到vue上
Vue.prototype.$message = Message // 挂载到了Vue上
  • 2.直接调用this.$message.error(‘登录失败!’)
登录成功后的行为
1.将登录之后的token,保存到客户端的sessionStorage中
  • 1.项目中除了登录之外的其他API接口,必须在登录之后才能访问
  • 2.token只应在当前网站打开期间生效,所以将token保存在sessionStorage中
    将这个token存储到了会话存储中
2.通过编程式导航跳转到后台主页,路由地址是/home
        window.sessionStorage.setItem('token', 'res.data.token')//保存token 这里是乱保存的固定值this.$router.push('/home') //跳转路由,进入下一个页面

[Vue项目实战]登录功能实现相关推荐

  1. 【VUE项目实战】54、商品添加功能(四)-商品图片上传模块

    接上篇<53.商品添加功能(三)-商品参数及属性模块> 上一篇我们完成了商品参数和商品属性面板的开发,本篇我们来完成商品图片上传模块的开发. 一.要实现的效果 我们在商品图片页签,需要放置 ...

  2. 【VUE项目实战】37、商品分类功能介绍和基本结构搭建

    接上篇<36.用户分配角色功能> 上一篇我们完成了为用户分配角色的功能,结束了权限管理模块.本篇我们开启新模块"分类管理"的开发,先进行模块的介绍和基本结构的搭建. 一 ...

  3. 【VUE项目实战】9、创建登录组件并绘制布局

    接上篇<8.登录与退出功能开发准备(二)> 上一篇讲解了登录模块的开发的前置准备工作,本篇来正式开发登录模块. 一.创建登录组件并渲染 下面我们创建一个根组件,并将根组件渲染到App根组件 ...

  4. Vue项目实战之电商后台管理系统(一) 用户登录模块

    目录 一.项目概述 二.项目初始化 2.1 前端项目初始化步骤 2.2 后台项目的环境安装配置 三.用户登录/登出功能实现 3.1 登录功能概述 3.1.1 登录状态保持 3.1.2 登录逻辑: 3. ...

  5. 【VUE项目实战】59、订单的物流信息查询功能

    接上篇<58.订单修改收货地址的功能> 上一篇我们完成了订单列表的修改收货地址功能,本篇我们来实现订单的物流信息查询功能. 一.要实现的效果 我们要实现点击操作列的"物流进度&q ...

  6. 【VUE项目实战】56、商品添加功能(六)-提交添加的商品

    接上篇<55.商品添加功能(五)-商品内容模块> 上一篇我们完成了商品内容编辑模块的开发,也即是完成了商品所有的信息编辑,本篇我们就来开发提交商品所有信息到后台的功能. 一.要实现的效果 ...

  7. 【VUE项目实战】41、添加商品分类功能(二)

    接上篇<40.添加商品分类功能(一)> 上一篇我们实现了部分添加商品分类的功能,本篇我们来继续处理添加分类时表单相关的内容. 一.优化上一章剩余的小问题 首先我们先处理一下选中之后想要清除 ...

  8. 【VUE项目实战】32、权限管理-实现角色列表

    接上篇<31.权限管理-实现权限列表> 上个阶段我们完成了权限管理模块,本篇我们来介绍用户.角色和权限三者的关系,并完成角色管理列表模块. 一.权限管理业务分析 通过权限管理模块,控制不同 ...

  9. Vue项目实战 —— 哔哩哔哩移动端开发—— 第一篇

    目录 前言完 效果图 : 登录含签权 注册带正则 个人中心 下拉加载更多主页 修改个人中心 视频播放加关注+收藏 评论盖楼A回复B B回复C C回复A类似 项目开始 封装登录.注册 封装登录 从零到一 ...

最新文章

  1. SPF Tarjan算法求无向图割点(关节点)入门题
  2. ubuntu安装openssl命令
  3. 机器学习笔记 network compression
  4. 万稞pw80线切割编程软件_线切割机床的控制系统的现状
  5. cmake,CMakeLists.txt,make,makefile的关系
  6. 华为云GaussDB深耕数字化下半场,持续打造数据库根技术
  7. Auto 和 Decltye 的区别
  8. java 制作动态手机壁纸_android 动态切换壁纸实例 利用service机制实现 附完整源码 带动态截图...
  9. 3-unit8 Mariadb数据库
  10. 16c语言第七届省赛,第十六届青少年信息学奥林匹克联赛初赛试题(附答案)
  11. Java 概述、Java语言的特点、什么是跨平台性、Java语言平台版本、什么是jdk,jre、JDK和JRE的下载安装...
  12. 环形电流计算公式_环形电感的计算公式
  13. 一文带你实现游戏中的音乐、音效设置
  14. 手机型号云服务器,手机型号云服务器
  15. pwm超详细解读,大佬细说pwm的控制方式
  16. 遗传算法入门(连载之十) 神经网络入门(连载预告)
  17. 在单机上通过docker搭建redis集群试验
  18. 计算机在课堂教学中的应用,计算机技术在课堂教学中的应用
  19. matlab中尖号,在Matlab中函數中的一個尖角消除掉
  20. 心电图前波过多_心电图老也搞不清的那些波啊——δ波

热门文章

  1. 操作系统面试问题汇总(超详细)
  2. ping 命令详细使用
  3. 【51单片机】0.96寸OLED取模教程(图片、汉字)+ 代码
  4. 使用java程序下载远程zip文件并解压文件( 带注释解释代码)
  5. Hyperledger Fabric基础
  6. 下载地图时如何去掉谷歌卫星地图上的水印
  7. 【MySQL从小白到高手】第五篇:最强迪卡尔积详解
  8. python异步编程案例之协程执行和停止
  9. 3D木门家居建材行业的时尚弄潮儿
  10. 彻底卸载vscode Linux,ubuntu如何卸载vscode_编程开发工具