位置: IT常识 - 正文

Vue实战篇三十五:实现滑动拼图验证登录(vue实例教程)

编辑:rootadmin
Vue实战篇三十五:实现滑动拼图验证登录 系列文章目录

推荐整理分享Vue实战篇三十五:实现滑动拼图验证登录(vue实例教程),希望有所帮助,仅作参考,欢迎阅读内容。

Vue实战篇三十五:实现滑动拼图验证登录(vue实例教程)

文章相关热门搜索词:vue实战案例,vue实战技巧,vue详细教程,vue详细教程,vue实战技巧,vue 实战,vue实战技巧,vue 实战,内容如对您有帮助,希望把文章链接给更多的朋友!

Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:Vue的指令 Vue基础篇六:Vue使用JSX进行动态渲染 Vue提高篇一:使用Vuex进行状态管理 Vue提高篇二:使用vue-router实现静态路由 Vue提高篇三:使用vue-router实现动态路由 Vue提高篇四:使用Element UI组件库 Vue提高篇五:使用Jest进行单元测试 Vue提高篇六: 使用Vetur+ESLint+Prettier插件提升开发效率 Vue实战篇一: 使用Vue搭建注册登录界面 Vue实战篇二: 实现邮件验证码发送 Vue实战篇三:实现用户注册 Vue实战篇四:创建多步骤表单 Vue实战篇五:实现文件上传 Vue实战篇六:表格渲染动态数据 Vue实战篇七:表单校验 Vue实战篇八:实现弹出对话框进行交互 Vue实战篇九:使用省市区级联选择插件 Vue实战篇十:响应式布局 Vue实战篇十一:父组件获取子组件数据的常规方法 Vue实战篇十二:多项选择器的实际运用 Vue实战篇十三:实战分页组件 Vue实战篇十四:前端excel组件实现数据导入 Vue实战篇十五:表格数据多选在实际项目中的技巧 Vue实战篇十六:导航菜单 Vue实战篇十七:用树型组件实现一个知识目录 Vue实战篇十八:搭建一个知识库框架 Vue实战篇十九:使用printjs打印表单 Vue实战篇二十:自定义表格合计 Vue实战篇二十一:实战Prop的双向绑定 Vue实战篇二十二:生成二维码 Vue实战篇二十三:卡片风格与列表风格的切换 Vue实战篇二十四:分页显示 Vue实战篇二十五:使用ECharts绘制疫情折线图 Vue实战篇二十六:创建动态仪表盘 Vue实战篇二十七:实现走马灯效果的商品轮播图 Vue实战篇二十八:实现一个手机版的购物车 Vue实战篇二十九:模拟一个简易留言板 Vue项目实战篇一:实现一个完整的留言板(带前后端源码下载) Vue实战篇三十:实现一个简易版的头条新闻 Vue实战篇三十一:实现一个改进版的头条新闻 Vue实战篇三十二:实现新闻的无限加载 Vue实战篇三十三:实现新闻的浏览历史 Vue实战篇三十四:给新闻WebApp加入模拟注册登录功能 Vue项目实战篇二:实现一个完整的新闻WebApp客户端(带前端源码下载)

文章目录系列文章目录一、背景二、引入滑动拼图验证组件三、修改登录页面四、效果演示五、源码地址
一、背景在前面的文章中,我们编写过登录页面。用户在登录时需要输入账号与密码,再点击登录按钮进行登录。 这次,我们将设置滑块拼图进行登录验证,以防止恶意的机器人登录。 二、引入滑动拼图验证组件我们将引入vue-monoplasty-slide-verify组件,实现滑动拼图验证。GitHub网址演示网址 安装组件npm install --save vue-monoplasty-slide-verify在main.js文件中导入组件import Vue from 'vue'...import SlideVerify from 'vue-monoplasty-slide-verify'Vue.use(SlideVerify)...new Vue({ el: '#app', router, store, render: h => h(App)})三、修改登录页面我们需要在登录页面中加入该组件,并且设置只有滑动验证成功后,才能点击登录按钮(也可以根据个人需要,取消该登录按钮,变成滑动验证成功后,即可直接登录) 以下是修改后的登录页面源码:<template> <div v-if="logined == true" class="content"> <div class="header"> <div class="user"> <img class="avatar" src="@/assets/images/avatar.png"> <p class="user-name">{{ loginForm.username }}</p> <img class="right" src="@/assets/images/right.png"> </div> <div class="info"> <div class="histroy" @click="toHistroy()"> <span class="histroy-count">{{ histroryCount }}</span> <span class="histroy-text">{{ '浏览历史' }}</span> </div> <div class="fav"> <span class="fav-count">{{ favCount }}</span> <span class="fav-text">{{ '我的收藏' }}</span> </div> </div> </div> <div class="logout"> <el-button size="medium" type="danger" style="width: 90%" @click.native.prevent="logout" > <span>退 出 登 录</span> </el-button> </div> </div> <div v-else> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form" > <h2 class="title">欢迎使用</h2> <el-form-item prop="username"> <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号" > <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> </el-input> </el-form-item> <el-form-item prop="password"> <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin" > <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> </el-input> </el-form-item> <!-- 滑动拼图验证区 --> <el-form-item style=""> <slide-verify :l="42" :r="10" :w="350" :h="155" slider-text="向右滑动" @success="onSuccess" @fail="onFail" /> </el-form-item> <!-- ---- --> <el-form-item style="width: 100%"> <el-button :disabled="!verified" :loading="loading" size="medium" type="danger" style="width: 100%" @click.native.prevent="handleLogin" > <span v-if="!loading">登 录</span> <span v-else>登 录 中...</span> </el-button> </el-form-item> <p class="register"> <!-- <span class="memo">请使用Chrome,Firefox,IE 10+ </span> --> 还没有帐号? <a href="/register" type="primary">立即注册</a> </p> </el-form> </div></template><script>export default { data() { return { loginForm: { username: '', password: '' }, loginRules: { username: [ { required: true, trigger: 'blur', message: '用户名不能为空' } ], password: [ { required: true, trigger: 'blur', message: '密码不能为空' } ] }, loading: false, // 图形验证是否通过 verified: false } }, computed: { histroryCount() { return this.$store.state.my.histroy.length }, favCount() { return this.$store.state.my.favourite.length }, logined() { return this.$store.state.my.logined } }, methods: { // 模拟登录成功 handleLogin() { this.$refs.loginForm.validate((valid) => { if (valid) { this.loading = true this.$store.commit('SET_LOGIN', true) this.loading = false } else { console.log('error submit!!') return false } }) }, // 模拟注销登录 logout() { this.$store.commit('SET_LOGIN', false) this.loginForm.username = '' this.loginForm.password = '' this.verified = false }, toHistroy() { if (this.histroryCount > 0) { this.$router.push('/list') } }, // 图形验证通过后,将登录按钮置为可用 onSuccess() { this.verified = true } }}</script><style lang="scss" scoped>.login-form { border-radius: 6px; background: #ffffff; width: 100%; padding: 25px 25px 5px 25px; margin-top: 25px; .el-input { height: 38px; input { height: 38px; } } .input-icon { height: 39px; width: 14px; margin-left: 2px; }}.title { margin: 0 auto 30px auto; text-align: center; color: #707070;}.register { float: right; font-size: 13px; // color: rgb(24, 144, 255);}a { color: #e72521; text-decoration: none; background-color: transparent; outline: none; cursor: pointer; transition: color 0.3s;}a:hover { color: #e72521;}.content { width: 100%; height: 100%; background-color: rgb(252, 248, 248);}.header { width: 100%; height: 5.33rem; background-color: #fff;}.user { margin-top: 0.5rem; overflow: hidden; padding: 0.5rem; height: 2.5rem; width: 100%;}.avatar { float: left; width: 1.8rem; height: 1.8rem; border-radius: 50%;}.user-name { float: left; margin-top: 0.6rem; margin-left: 0.5rem; color: #404040; font-size: 18px;}.right { float: right; width: 0.8rem; height: 0.8rem; margin-top: 0.6rem;}.info { float: left; padding: 1rem; height: 2.5rem; width: 100%;}.histroy { display: flex; float: left; flex-direction: column; align-items: center; justify-content: center; cursor: pointer;}.histroy-count { color: #404040; font-size: 18px;}.histroy-text { margin-top: 0.1rem; color: #9b9191; font-size: 14px;}.fav { display: flex; float: right; flex-direction: column; align-items: center; justify-content: center; cursor: pointer;}.fav-count { color: #404040; font-size: 18px;}.fav-text { margin-top: 0.1rem; color: #9b9191; font-size: 14px;}.logout { display: flex; align-items: center; justify-content: center; margin-top: 2rem;}</style>四、效果演示

五、源码地址请关注文末的微信公众号,回复“新闻客户端”,即可前端完整源码。

本文链接地址:https://www.jiuchutong.com/zhishi/298863.html 转载请保留说明!

上一篇:OpenAI 官方api 阅读笔记(openapi官网)

下一篇:Alexnet论文介绍(超详细)——ImageNet Classification with Deep Convolutional Neural Networks(alex研究原文)

  • 微信群投票怎么发起(微信群投票怎么搞)

    微信群投票怎么发起(微信群投票怎么搞)

  • 小米10的屏幕是多少尺寸(小米10的屏幕是lcd还是oled)

    小米10的屏幕是多少尺寸(小米10的屏幕是lcd还是oled)

  • 拼多多订阅物流动态什么意思(拼多多订阅物流提醒怎么取消不了)

    拼多多订阅物流动态什么意思(拼多多订阅物流提醒怎么取消不了)

  • 查找iphone无网络连接怎么办(苹果查找无网络可不可以用)

    查找iphone无网络连接怎么办(苹果查找无网络可不可以用)

  • 无线耳机可以k歌吗(无线耳机可以快充吗)

    无线耳机可以k歌吗(无线耳机可以快充吗)

  • 微信租号有什么后果(微信租号有什么风险)

    微信租号有什么后果(微信租号有什么风险)

  • oppo录屏怎么关闭麦克风(oppo录屏怎么关闭悬浮窗)

    oppo录屏怎么关闭麦克风(oppo录屏怎么关闭悬浮窗)

  • 内存条马甲有必要吗(电脑内存条带马甲的好还是不带马甲的好?)

    内存条马甲有必要吗(电脑内存条带马甲的好还是不带马甲的好?)

  • 空间隐身访问还有浏览记录嘛(空间隐身访问会有浏览量吗)

    空间隐身访问还有浏览记录嘛(空间隐身访问会有浏览量吗)

  • 抖音显示的地址是不是到哪就显示哪(抖音显示的地址是定位还是注册地址)

    抖音显示的地址是不是到哪就显示哪(抖音显示的地址是定位还是注册地址)

  • 无线接收器怎么连接电脑上网(无线接收器怎么连接电视机)

    无线接收器怎么连接电脑上网(无线接收器怎么连接电视机)

  • 网线色谱顺序(网线色谱顺序及其作用)

    网线色谱顺序(网线色谱顺序及其作用)

  • 苹果原装线支持多少瓦(苹果原装线可以配快充头吗)

    苹果原装线支持多少瓦(苹果原装线可以配快充头吗)

  • 电脑连接手机热点显示无internet访问权限(电脑连接手机热点无法上网)

    电脑连接手机热点显示无internet访问权限(电脑连接手机热点无法上网)

  • 苹果ID显示连接服务器时出现问题(苹果id显示连接服务器时出现问题)

    苹果ID显示连接服务器时出现问题(苹果id显示连接服务器时出现问题)

  • 手机tp保护膜是什么膜(手机tp保护膜多少钱)

    手机tp保护膜是什么膜(手机tp保护膜多少钱)

  • 苹果手机此时无法下载怎么办(苹果手机此时无法创建你的账户是什么意思)

    苹果手机此时无法下载怎么办(苹果手机此时无法创建你的账户是什么意思)

  • 华为3e怎么恢复出厂设置(华为3e恢复出厂设置怎么打开)

    华为3e怎么恢复出厂设置(华为3e恢复出厂设置怎么打开)

  • 手机没字怎么恢复(手机字体没有了怎么恢复)

    手机没字怎么恢复(手机字体没有了怎么恢复)

  • 华为手表健康三环啥意思(华为手表健康三环代表什么)

    华为手表健康三环啥意思(华为手表健康三环代表什么)

  • 拼多多15单免一怎么用(拼多多15单免一单规则)

    拼多多15单免一怎么用(拼多多15单免一单规则)

  • qq账号注销了还能恢复吗(qq注销之后还能登录吗)

    qq账号注销了还能恢复吗(qq注销之后还能登录吗)

  • 通话质量不佳是哪一方(通话质量差的原因)

    通话质量不佳是哪一方(通话质量差的原因)

  • 抖音上拍的视频怎么删除(抖音上拍的视频怎么剪辑)

    抖音上拍的视频怎么删除(抖音上拍的视频怎么剪辑)

  • 三星s10e是曲面屏吗(三星s10是曲屏)

    三星s10e是曲面屏吗(三星s10是曲屏)

  • 屏幕自动旋转在哪里可以关闭(屏幕自动旋转在哪里可以关闭苹果)

    屏幕自动旋转在哪里可以关闭(屏幕自动旋转在哪里可以关闭苹果)

  • 百度贴吧如何升级(百度贴吧如何升级等级)

    百度贴吧如何升级(百度贴吧如何升级等级)

  • 微信小程序的功能介绍(微信小程序的功能用不了是怎么回事)

    微信小程序的功能介绍(微信小程序的功能用不了是怎么回事)

  • 脚踝扭伤怎么办(羽毛球脚踝扭伤怎么办)

    脚踝扭伤怎么办(羽毛球脚踝扭伤怎么办)

  • 应交增值税一般纳税人的账怎么做
  • 投资公司取得的投资收益属于销售额吗
  • 异地预缴可以退吗
  • 哪些情况可免征增值税
  • 个人获得的专利有哪些
  • 红字发票注明的进项税额转出
  • 可回收再生资源有哪些
  • 发票验旧日期是什么意思
  • 销项税额转出减去还是加上
  • 房产企业赠送无形资产
  • 房屋买卖终止协议
  • 国库存款利息收入计入哪个预算收入科目
  • 企业作为二房东要交什么税
  • 资产减少应注意的问题有哪些?
  • 购买的职业险计入哪个科目
  • 一次性付清货款要交税吗
  • 合同不含税怎么算
  • 小微企业免税销售额填含税还是不含税
  • 内销征税是什么意思
  • 其他应收款如何调平分录
  • 专票上少打了开户行账号可以认证吗
  • 个人股权转让个税计算
  • 委托加工白酒的计税依据
  • 一般纳税人交税标准是多少
  • 哪些发票公司可以抵扣
  • 小规模增值税报表模板
  • 实发工资需扣除所得税吗
  • 出租房产免收租金合法吗
  • 如何解决win10系统复制文件速度
  • 商场充值卡发票在哪开
  • 如何使用php
  • 吃鸡到底用什么显卡性价比最高?
  • 房屋装修固定家具是否计入房产税
  • 跨年发票可以到次年几月份
  • 企业利润对外投资会计处理
  • PHP:iconv_strlen()的用法_iconv函数
  • 密歇根湖怎么读
  • vue修改表格数据
  • 个人博客登录入口
  • 外汇申报是什么意思
  • querywrapper多表联查
  • download github
  • 小程序的生命周期函数有哪些
  • 万能的python
  • gpgpu编程技术
  • cmd more命令
  • ls命令的作用
  • 软件开发增值税减免政策
  • python国内下载地址
  • 金税盘申报流程视频
  • 对公账户一直没有对账,会有什么后果吗?
  • 职工薪酬包括哪些应如何计算
  • 租赁房产税计税依据及计算方式是什么
  • 一般纳税人企业所得税多久申报一次
  • 资产处置损益的明细科目
  • 建设项目开办费包括哪些
  • 认证后的进项税额留抵退税
  • 企业支付的技术转让费计入管理费用吗
  • mysql命令行导出结果
  • linux解析命令
  • userexperience是什么意思
  • winxp和win7之间的系统
  • windows7字体安装方法
  • 打开安全启动
  • win8高级设置在哪里
  • win10升级后小娜不能用
  • win10系统玩游戏闪退怎么解决
  • 高通ar芯片
  • node.js使用教程
  • 安装运行windows
  • 在解决ul居中问题时想到的几点
  • css跑马灯效果
  • 微软早在1985年便首次使用了安卓上饱受争议的汉堡按钮
  • js解析url参数的方法
  • android contextmenu
  • angularjs input
  • 用jquery实现动态添加
  • mac配置android开发环境
  • javascript操作网页
  • 服务收入确认条件有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设