Vue-cli实现登录和重置功能

2023-11-09

Vue-cli实现登录和重置功能

1. 项目初始化
① 安装Vue脚手架 npm install -g @vue/cli
② 通过Vue脚手架创建项目:在cmd命令行中输入 vue ui,使用图形化界面创建项目
③配置Vue路由,配置Elment-UI组件库,配置axios库:通过添加插件和依赖安装以上配置
在这里插入图片描述
2. 后台项目的环境配置
① 安装mysql数据库
② 安装Node.js环境
③ 配置项目相关信息:安装phpstudy,通过MySQL管理器导入vue_api_server中db的mydb_sql,输入密码root,选择文件所在位置,还原数据库名为mydb(将vue_api_server放在桌面上导入),选择MySQL工具,点击打开数据库目录,看到文件夹mydb中有文件就代表数据库导入成功
④ 使用node启动本地服务器:在vue_api_server中先npm i,再使用node app.js启动本地服务器,就可看到接口
⑤ 使用Postman测试后台项目接口是否正常
在这里插入图片描述
3. 创建登录组件布局
在Login.vue文件中,使用elment-ui组件进行布局

<template>
    <div class="login_container">
        <div class="login_box">
            <!-- 头像区域 -->
            <div class="avatar_box">
                <img src="../assets/logo.png" alt="">
            </div>
            <!-- 登录表单区域 -->
            <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label-width="0px" class="login_form">
                <!-- 用户名 -->
                <el-form-item prop="username">
                    <el-input v-model="loginForm.username" prefix-icon="iconfont icon-user"></el-input>
                </el-form-item>
                <!-- 密码 -->
                <el-form-item prop="password">
                    <el-input v-model="loginForm.password" prefix-icon="iconfont icon-3702mima" type="password"></el-input>
                </el-form-item>
                <!-- 按钮区域 -->
                <el-form-item class="btns">
                    <el-button type="primary" @click="login">登录</el-button>
                    <el-button type="info" @click="resetLoginForm">重置</el-button>
                </el-form-item>
            </el-form>
        </div>
    </div>
</template>

4. 验证登录

<script>
export default {
    data () {
        return {
            // 登录表单的数据绑定区域
            loginForm: {
                username: 'zs',
                password: '123'
            },     
            // 表单的验证规则对象   
            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' }
                ]
            }
        }
    },
    methods: {
        // 点击重置按钮,重置登录表单
        resetLoginForm(){
            // console.log(this)
            this.$refs.loginFormRef.resetFields();
        },
        login(){
            this.$refs.loginFormRef.validate(async valid => {
                if(!valid) return;
                const {data: res} = await this.$http.post('login', this.loginForm);
                if(res.meta.status != 200) return console.log("登录失败!")
                console.log("登录成功!")
            });
        }
    }
}
</script>

5. 登录成功或失败后的消息提示
对登陆成功或失败给出消息提示,调用element-ui的Message组件
导入Message:

// 导入弹框提示组件
import { Message } from 'element-ui'
// 将Message组件挂载到Vue组件原型上,可通过this访问到$message,就可进行弹框提示
Vue.prototype.$message = Message

使用方法:

if(res.meta.status != 200) return this.$message.error("登录失败!")
this.$message.success("登录成功");

在这里插入图片描述
6. 登录成功后保存token并跳转到后台主页
1. 将登录成功之后的token,保存到客户端的sessionStorage中
1.1 项目中除了登录之外的其他API接口,必须在登录之后才能访问
1.2 token只应在当前网站打开期间生效,所以将token保存在sessionStorage中
window.sessionStorage.setItem('token', res.data.token);
2. 通过编程式导航跳转到后台主页,路由地址是 /home :this.$router.push('/home');
7. 路由导航守卫
如果用户没有登录,但是直接通过URL访问特定页面,需要重新导航到登录页面

// 挂载路由导航守卫
router.beforeEach((to, from , next) => {
  // to 将要访问的路径
  // from 代表从哪个路径跳转而来
  // next 是一个函数,表示放行 next()放行  next('/login')强制跳转
  if(to.path == '/login') return next()
  // 获取token
  const tokenStr = window.sessionStorage.getItem('token')
  if(!tokenStr) return next('/login')
  next()
})

export default router

8.通过axios请求拦截器添加token,保证拥有获取数据的权限
在每次调用API接口前,必须在请求头中使用Authorization字段提供token令牌
在main.js中配置请求根路径时加上headers中加上Authorization属性

import axios from 'axios'
// 配置请求的根路径
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'
axios.interceptors.request.use(config =>{
  console.log(config)
  config.headers.Authorization = window.sessionStorage.getItem('token')
  // 最后必须return config,规定写法
  return config
})
Vue.prototype.$http = axios
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue-cli实现登录和重置功能 的相关文章

  • 活动回顾|多模态 AI 开发者的线下聚会@深圳站(内含福利)

    回顾来了 4 月 22 日 由 Jina AI 和 OpenMMLab 联合主办的 多模态 AI Office Hours 深圳站圆满结束 迎来了将近 60 位开发者的热情参与 现场不仅有别开生面的 开发者集市 供大家打卡赢取好礼 更有四场
  • 2023华为OD机试Python【最接近中位数的索引】

    前言 本题使用Python解答 如果需要Java版本答案 请参考以下链接 点击此处跳转 题目 假设我们有一个数组X和正整数K 满足以下表达式 X i x i 1 X i K 1 结果最接近于数组中位数的下标i 如果有多个i满足条件 请返回最
  • SuspendThread 造成程序死锁的一个例子

    msdn对SuspendThread 的说明 This function is primarily designed for use by debuggers It is not intended to be used for thread
  • 从零开始学GitHub【第三篇】

    GitHub 需要搭梯子么 印象中 GitHub 之前确实总是断断续续的访问不了 不过在13年初的时候有段时间最严重 一度被封了 当时李开复老师再也忍无可忍 公开发了一条抗议 GitHub 被封的微博 这事我印象很深 因为我是12年底加入的
  • Qt关于lineEdit的输入格式设置

    设置提示文字 ui gt lineEdit gt setPlaceholderText 联机游戏欢乐多 仅能输入整数 无限制 ui gt lineEdit gt setValidator 0 仅能输入整数 ui gt lineEdit gt
  • 移动端页面适配

    目录 一 移动端页面适配 1 什么是移动端页面适配 2 移动端页面适配的设计方向 二 0 适配 1 简介 2 缺陷 三 等比缩放 1 viewport 缩放方案 2 动态 REM 方案 3 VW 适配方案 4 适配方案对比 四 相对单位 e

随机推荐

  • 零基础想转行Python?新手应该注重学习哪方面的技术?

    大家都用Python做什么 做网站后台 有大量的成熟的框架 如django flask bottle tornado 写网络爬虫 Python写爬虫很简单 库很健全 科学计算 参加数学建模大赛 完全可以替代r语言和MATLAB 数据挖掘 机
  • mybatis sql xml文件读取源码分析

    在执行一个自定义sql语句时 dao对应的代理对象时如何找到sql 也就是dao的代理对象和sql之间的关联关系是如何建立的 在mybatis中的MybatisPlusAutoConfiguration类被 Configuration注解
  • 《DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks》论文阅读之DeblurGAN

    前言 现实生活中 大多数图片是模糊不清的 试想一下 追剧时视频不清晰 看着都很捉急 何况现实中好端端的一幅美景 美女也可以 被抓拍得不忍直视 瞬间暴躁 拍照时手抖 或者画面中的物体运动都会让画面模糊 女友辛辛苦苦摆好的各种Pose也将淹没在
  • uniapp设置动态背景图片

    ps 小程序在运行时 背景图片使用本地路径 在开发工具中可以正常显示 但是在真机调试时无法显示 解决 使用远程路径的方式
  • ros学习中遇到**[ERROR] [1552999261.807795886, 0.001000000]:**

    在ROS中学习SLAM及NAVIGATION时遇到以下问题 ERROR 1552999261 807795886 0 001000000 GazeboRosControlPlugin missing while using DefaultR
  • git开发必备命令

    使用git进行代码管理时 虽现有的开发工具对git的集成程度都比较高 但是会使用git命令行 在很多时候也能派上用场 况且技多不压身 以下是目前作为git项目开发者必备的命令 拉项目 开发一个项目 首先需要拉取该项目在本地 再切到本地开发分
  • TDP真的不是功耗?讲解“睿频”技术发展史

    在睿频2 0中有四个功耗限制等级 PL1 默频 可以长时间工作 此时的值就是TDP 注意红圈 PL2 可以以高于默认频率较长时间工作 有时间限制并不是无限的 PL3 偶尔可以超过的值 不过超过了会马上强制缩回 也就是功率处于跳动状态 PL4
  • 二十个经典的问题(一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 问题一 在多线程环境中使用HashMap会有什么问题 在什么情况下使用get 方法会产生无限循环 HashMap本身没有什么问题 有没有问题取决于你是如何使用它的 比如 你
  • 嵌入式Linux子系统之网络子系统网卡驱动分析

    嵌入式Linux子系统之网络子系统网卡驱动分析 重要数据结构 struct net device 描述网卡驱动的结构 struct net device ops 设备操作统一接口操作集 struct sk buff 网络数据包描述结构 一般
  • Swift 之 JSONEncoder 和 JSONDecoder

    Swift 之 JSONEncoder 和 JSONDecoder 摘自官方文档 A type that can convert itself into and out of an external representation Codab
  • WSL2 BIOS已经开启了VT-x 但windows内安装显示不支持

    问题 安装安卓模拟器之后 wsl打开报错 已退出进程 代码为 4294967295 WSL 2问题解决 WSL 2与VMWare 或其他使用Intel VT x技术的虚拟机 虽然可以一起运行 但是安装WSL2后不禁用虚拟平台的话无法安装采用
  • TensorFlow2.0正式版安装

    文章目录 一 熟悉conda常用的cmd指令 二 TF2 0 CPU版本安装 1 新建TF2 0 CPU环境 2 进入TF 2C环境 3 在环境中安装TF2 0 CPU版本 4 测试TensorFlow是否安装成功 三 测试一个简单的Ten
  • C语言基础练习题(矩阵乘法)

    给定一个N阶矩阵A 输出A的M次幂 M是非负整数 例如 A 1 2 3 4 A的二次幂 7 10 15 22 输入格式 第一行是一个正整数N M 1 N 30 0 M 5 表示矩阵A的阶数和要求的幂数接下来N行 没行N个绝对值不超过10的非
  • 【Darknet】yolo层forward_yolo_layer函数详解

    最近在研究Darknet源码 这篇主要分享一下yolo层中forward yolo layer函数的源码 前言 神经网络是由很多层叠加起来的 Darknet也不例外 Darknet中的每一层都有make xxx layer forward
  • Ubuntu如何开启共享文件夹---亲测有效

    Ubuntu如何开启共享文件夹 亲测有效 一 安装VM Tools 选择安装VMware Tools 安装完后 在文件中会有一个压缩包 将压缩包移动到桌面或者其他路径进行解压缩 若出现没有足够的空间提取 1 使用归档管理器打开 2 提取 3
  • Docker 启动RabbitMQ 服务,外部不能正常访问

    今天在总结RabbitMQ消息队列服务器时 遇到一个小问题 服务器拉取RabbitMQ 服务器镜像正常 启动RabbitMQ 镜像服务正常 但通过外部访问RabbitMQ 管理端提示无法访问 第一步 检查服务器的防火墙状态 firewall
  • Linux网络编程基本知识

    Linux网络编程基本知识 from 实战Linux Socket 编程 1 套接口 include
  • linux掌握物理页面的分配和回收,系统软件课程设计指导书-2010-12

    2 本次课程设计要求阅读的Linux源代码版本为2 4 18 其他版本无效 3 结合操作系统基本原理进行代码分析 并进行详细分析和完整注释 注释越详细 成绩越好 5 设计型题目要按照要求完成全部算法 6 一定要充分地考虑个人的能力选择相应的
  • 更新和寻找最新的sid——持续更新中

    第一种 开始程序SAS中找到续订SAS软件 浏览找到最新的sid txt文件 确定 更新许可 确定 第二种 打开SAS 在编辑器中复制粘贴sid文件中第一个BEGIN下的 PROC SETINIT SAVE RUN 大概20行 点击上方的提
  • Vue-cli实现登录和重置功能

    Vue cli实现登录和重置功能 1 项目初始化 安装Vue脚手架 npm install g vue cli 通过Vue脚手架创建项目 在cmd命令行中输入 vue ui 使用图形化界面创建项目 配置Vue路由 配置Elment UI组件