龙空技术网

base64生成验证码

雪地大懒猫 302

前言:

如今兄弟们对“图片验证码程序ajax”大概比较注意,兄弟们都需要了解一些“图片验证码程序ajax”的相关资讯。那么小编也在网摘上汇集了一些有关“图片验证码程序ajax””的相关文章,希望咱们能喜欢,我们一起来了解一下吧!

登录系统需要验证验证码,简单的生成验证码,以及前端页面展示。

后端代码:

@GetMapping("/captchaImage")

public AjaxResult captcha() throws IOException {

String key = UUID.randomUUID().toString();

String code = captchaProducer.createText();

BufferedImage image = captchaProducer.createImage(code);

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

ImageIO.write(image, "jpg", outputStream);

BASE64Encoder encoder = new BASE64Encoder();

String str = "data:image/jpeg;base64,";

String base64Img = str + encoder.encode(outputStream.toByteArray());

// 将生成的验证码放入redis缓存中

redisCache.hset(Constants.CAPTCHA_CODE_KEY,key, code, 120);

AjaxResult ajax = AjaxResult.success();

ajax.put("uuid", key);

ajax.put("img", base64Img);

return ajax;

}

前端代码:

1、定义login.js(用于请求后端接口)

import request from '@/utils/request'

// 获取验证码

export function getCodeImg () {

return request({

url: '/captchaImage',

headers: {

isToken: false

},

method: 'get',

timeout: 20000

})

}

2、登录页面 login.vue

① 引入getCodeImg 方法

import { getCodeImg } from '@/api/login'

② 定义codeUrl接收

data () {

return {

codeUrl: ''

}

③定义方法getCode

methods: {

getCode () {

getCodeImg().then(res => {

this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff

if (this.captchaOnOff) {

// 如果后端只是返回了string没有添'data:image/gif;base64,',必须添加上,否则前端不显示

// this.codeUrl = 'data:image/gif;base64,' + res.img

this.codeUrl = res.img

this.loginForm.uuid = res.uuid

}

})

}

}

④ el-form 定义验证码

<el-form-item prop="code" v-if="captchaOnOff">

<el-input

v-model="loginForm.code"

auto-complete="off"

placeholder="验证码"

style="width: 63%"

@keyup.enter.native="handleLogin"

>

<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />

</el-input>

<div class="login-code">

< img :src="codeUrl" @click="getCode" class="login-code-img"/>

</div>

</el-form-item>

效果图:

标签: #图片验证码程序ajax