From 2a125174ea501d53c59f627347bdec9012928960 Mon Sep 17 00:00:00 2001 From: china <527956374@qq.com> Date: 星期一, 17 四月 2023 13:55:52 +0800 Subject: [PATCH] 拼图滑块验证 --- src/views/user/login.vue | 149 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 96 insertions(+), 53 deletions(-) diff --git a/src/views/user/login.vue b/src/views/user/login.vue index 497dfc6..3096f7a 100644 --- a/src/views/user/login.vue +++ b/src/views/user/login.vue @@ -40,6 +40,12 @@ <el-form-item v-if="loginForm.verifyType==='slide'"> <drag-verify @success="verifyTrue" ref="verify"/> </el-form-item> + <el-form-item v-if="loginForm.verifyType==='jigsaw'"> +<!-- <drag-verify @success="verifyTrue" ref="verify"/>--> + <transition duration="1000" name="el-fade-in" v-if="verify"> + <jigsaw-verify v-if="loginForm.verifyType==='jigsaw'" :left="left" :top="top" @hide="verifyFalse" @success="handleLogin" /> + </transition> + </el-form-item> <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">璁颁綇瀵嗙爜</el-checkbox> <el-form-item style="width:100%;"> <el-button @@ -65,26 +71,31 @@ </template> <script> -import { getCodeImg } from "@/api/login"; -import dragVerify from './dragVerify/index.vue'// 婊戝姩楠岃瘉缁勪欢 -import Cookies from "js-cookie"; -import { encrypt, decrypt } from '@/utils/jsencrypt' + import {getCodeImg, getCodeNone} from "@/api/login"; + import dragVerify from './dragVerify/index.vue' // 婊戝姩楠岃瘉缁勪欢 + import jigsawVerify from '@/views/components/verify' // 鎷煎浘楠岃瘉缁勪欢锛�2023-04-06 + import Cookies from "js-cookie"; + // import {encrypt} from '@/utils/jsencrypt' -export default { + export default { components: { - 'drag-verify': dragVerify + 'drag-verify': dragVerify, + 'jigsaw-verify': jigsawVerify }, data() { return { verify:false, // 婊戝姩鏍¢獙 codeUrl: "", + left: '50%', // 鎷煎浘楠岃瘉鐮佷綅缃� + top: '220px', // 鎷煎浘楠岃瘉鐮佷綅缃� loginForm: { - verifyType: 'code',// 'code': 楠岃瘉鐮� 'slide':婊戝潡 'jigsaw':鎷煎浘 - username: "supervisor", - password: "123456", - rememberMe: false, + username: 'supervisor', + password: '123456', code:'', - uuid: "" + uuid: '', + loginType: 'user_pass', // 鐢ㄦ埛鍚嶃�佸瘑鐮佹柟寮忕櫥褰� + verifyType: 'jigsaw'// 'code': 楠岃瘉鐮� 'slide':婊戝潡 'jigsaw':鎷煎浘 + // rememberMe: false, }, loginRules: { username: [ @@ -112,30 +123,49 @@ } }, created() { - if(this.loginForm.verifyType==='code'){ - this.getCode(); - } + // if(this.loginForm.verifyType==='code'){ + // } + this.getCode(); this.getCookie(); }, methods: { verifyTrue () { this.verify = true }, + verifyFalse() { + this.verify = false + }, getCode() { - getCodeImg().then(res => { - // console.log(res); - // this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled; - this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled; - console.log("captchaEnabled = " + this.captchaEnabled); - if (this.captchaEnabled) { - // this.codeUrl = "data:image/gif;base64," + res.img; - this.codeUrl = "data:image/jpeg;base64," + res.data.img; - // this.loginForm.uuid = res.uuid; - } - // 鏈夋病鏈夐獙璇佺爜锛岄兘闇�瑕乽uid浣滀负鍞竴鏍囪瘑锛�2022-12-01 - this.loginForm.uuid = res.data.uuid; + if(this.loginForm.verifyType==='code'){ + getCodeImg().then(res => { + // console.log(res); + // this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled; + this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled; + console.log("captchaEnabled = " + this.captchaEnabled); + if (this.captchaEnabled) { + // this.codeUrl = "data:image/gif;base64," + res.img; + this.codeUrl = "data:image/jpeg;base64," + res.data.img; + // this.loginForm.uuid = res.uuid; + } + // 鏈夋病鏈夐獙璇佺爜锛岄兘闇�瑕乽uid浣滀负鍞竴鏍囪瘑锛�2022-12-01 + this.loginForm.uuid = res.data.uuid; - }).catch(err=>{console.log(err);}); + }).catch(err=>{console.log(err);}); + + } else if(this.loginForm.verifyType==='jigsaw'){ + // 鎷煎浘鏂瑰紡锛岀湅闇�瑕佸暐鍙傛暟锛屾殏鏈疄鐜� + console.log('jigsaw...'); + this.loginForm.code = 'jigsaw'; // 濉厖code榛樿鍊硷紝鍚﹀垯楠岃瘉涓嶉�氳繃銆�2023-04-06 + + } else if(this.loginForm.verifyType==='slide' || this.loginForm.verifyType==='sms'){ + // 涓嶉渶瑕侀獙璇佺爜锛屼絾浠嶉渶瑕佽姹傛帴鍙h幏鍙杣uid + getCodeNone().then(res => { + this.loginForm.uuid = res.data.uuid; + }).catch(err=>{console.error(err);}); + + } else { + this.$message.error('涓嶆敮鎸佺殑楠岃瘉鐮佺被鍨�:' + this.loginForm.verifyType); + } }, getCookie() { const username = Cookies.get("username"); @@ -145,34 +175,47 @@ this.loginForm.password = password === undefined ? this.loginForm.password : password this.loginForm.rememberMe = rememberMe === undefined ? this.loginForm.rememberMe : rememberMe }, - handleLogin() { + handleLogin(param) { + // 鎷煎浘楠岃瘉 娌℃湁杩斿洖param鏃跺�� + if(this.loginForm.verifyType==='jigsaw' && !param.uuid){ + this.verify = true + return false + } + // 鎷煎浘楠岃瘉 杩斿洖param鏃跺�� + if(this.loginForm.verifyType==='jigsaw' && param.uuid){ + // 鎷煎浘楠岃瘉鐮佹椂锛岃皟鐢ㄦ柟浼氫紶鍏ode锛堢敤鎴烽獙璇佺爜浣嶇疆锛夛紝uuid + this.loginForm.code = param.x; + this.loginForm.uuid = param.uuid; + } this.$refs.loginForm.validate(valid => { - if (valid) { - if (this.loginForm.verifyType==='slide' && !this.verify) { - this.$message.error('璇峰厛瀹屾垚楠岃瘉') - this.loading = false - return - } - this.loading = true; - if (this.loginForm.rememberMe) { - Cookies.set("username", this.loginForm.username, { expires: 30 }); - Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 }); - Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 }); - } else { - Cookies.remove("username"); - Cookies.remove("password"); - Cookies.remove('rememberMe'); - } - this.$store.dispatch("Login", this.loginForm).then(() => { - this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); - }).catch(() => { - this.loading = false; - if (this.captchaEnabled && this.loginForm.verifyType==='code') { - this.getCode(); + if (valid) { + if (this.loginForm.verifyType==='slide' && !this.verify) { + this.$message.error('璇峰厛瀹屾垚楠岃瘉') + this.loading = false + return } - }); - } - }); + this.loading = true; + if (this.loginForm.rememberMe) { + Cookies.set("username", this.loginForm.username, { expires: 30 }); + Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 }); + Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 }); + } else { + Cookies.remove("username"); + Cookies.remove("password"); + Cookies.remove('rememberMe'); + } + // console.log(this.loginForm); + // console.log("-----------------------------"); + this.$store.dispatch("Login", this.loginForm).then(() => { + this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); + }).catch(() => { + this.loading = false; + if (this.captchaEnabled && this.loginForm.verifyType==='code') { + this.getCode(); + } + }); + } + }); } } }; -- Gitblit v1.9.1