在登入页面,我们往往需要通过输入验证码才能进行登入,那我们下面就详讲一下在vue项目中如何配合element-ui实现这个功能
第一步:自定义一个生产随机验证码的组件,其本质是使用canvas绘制,详细代码如下:
第二步:使用该组件:
我们首先新建一个vue组件,在该组件进行布局,其中还包括用户名和密码的验证(这只是前端的简单验证,真实项目中还需要请求登入接口进行后端验证)
Box">
第三步:生产随机码与进行登入验证
import { isvalidUsername } from '@/utils/validate'
import SIdentify from '@/components/identify/identify.vue'
export default {
name: 'userlogin',data() {
// 用户名自定义验证规则
const validateUsername = (rule,value,callback) => {
if (!isvalidUsername(value)) {
callback(new Error('请输入正确的用户名'))
} else {
console.log('user',value)
callback()
}
}
// 验证码自定义验证规则
const validateVerifycode = (rule,callback) => {
if (value === '') {
callback(new Error('请输入验证码'))
} else if (value !== this.identifyCode) {
console.log('validateVerifycode:',value)
callback(new Error('验证码不正确!'))
} else {
callback()
}
}
return {
fontstyle: {
},loginForm: {
username: 'admin',password: '123456',verifycode: ''
},checked: false,identifyCodes: '1234567890',identifyCode: '',loginRules: { // 绑定在form表单中的验证规则
username: [
{ required: true,trigger: 'blur',validator: validateUsername }
],password: [
{ required: true,message: '请输入密码',trigger: 'blur' },{ min: 6,message: '密码长度最少为6位',trigger: 'blur' }
],verifycode: [
{ required: true,validator: validateVerifycode }
]
},passwordType: 'password'
}
},components: {
SIdentify
},created() {
},mounted() {
// 验证码初始化
this.identifyCode = ''
this.makeCode(this.identifyCodes,4)
},computed: {
},props: [],methods: {
// 通过改变input的type使密码可见
showPassword() {
this.fontstyle === '' ? (this.fontstyle = 'color: red') : (this.fontstyle = '') // 改变密码可见按钮颜色
this.passwordType === ''
? (this.passwordType = 'password')
: (this.passwordType = '')
},// 点击登入按钮
handleLogin() {
this.$refs.loginForm.validate(valid => {
if (valid) {
this.$store.dispatch('Login',this.loginForm).then(res => {
this.$router.push({ path: '/dashboard/dashboard' })
})
}
})
},// 生成随机数
randomNum(min,// 切换验证码
refreshCode() {
this.identifyCode = ''
this.makeCode(this.identifyCodes,// 生成四位随机验证码
makeCode(o,l) {
for (let i = 0; i < l; i++) {
this.identifyCode += this.identifyCodes[
this.randomNum(0,this.identifyCodes.length)
]
}
console.log(this.identifyCode)
}
}
}
最后的效果如下,当我们输入之后鼠标失去焦点就会进行验证:
总结
以上所述是小编给大家介绍的vue+element-ui集成随机验证码+用户名+密码的form表单验证功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!