vue+spring boot實現(xiàn)校驗碼功能
更新時間:2021年05月27日 16:32:07 作者:藍雨溪
這篇文章主要為大家詳細介紹了vue+spring boot實現(xiàn)校驗碼功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了vue+spring boot實現(xiàn)校驗碼功能的具體代碼,供大家參考,具體內(nèi)容如下
用vue寫了一個校驗碼來玩玩,樣子如下:
1.img標簽
<img ="height:40px; width: 100px; cursor: pointer;" ref="imgIdentifyingCode" :src="selectedLogoPicture.imgUrl" class="logoImg" >
2.js代碼
/** * 獲取校驗碼 */ getIdentifyingCode() { let selft = this; //let pic = this.$refs.imgIdentifyingCode selft.loadingChack = true; let uuid = Utils.getUuid(32, 16); this.$store.state.uuid = uuid; this.$api.reader.getVerify( { responseType: "arraybuffer", uuid: uuid }, r => { selft.loadingChack = false; selft.selectedLogoPicture.imgUrl = "data:image/png;base64," + r; } ); },
3.controller
@RequestMapping("/getVerify") public void getVerify(@RequestParam String uuid, HttpServletRequest request, HttpServletResponse response) { response.setContentType("image/jpeg");// 設(shè)置相應類型,告訴瀏覽器輸出的內(nèi)容為圖片 response.setHeader("Pragma", "No-cache");// 設(shè)置響應頭信息,告訴瀏覽器不要緩存此內(nèi)容 response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expire", 0); userService.getRandcodedDawTransparent(uuid, request, response);// 輸出驗證碼圖片方法 }
4.service
@Override public void getRandcodedDawTransparent(String uuid, HttpServletRequest request, HttpServletResponse response) { try { Map<String, Object> map = CodeUtil.getRandcodedDawTransparent(); // 將生成的隨機字符串保存到session中 log.info("==保存的uuid:"+uuid); log.info("==保存的code:"+map.get("code")); sessionUtil.saveCode(uuid, map.get("code")); response.setContentType("image/png"); OutputStream out = response.getOutputStream(); out.write((byte[]) map.get("img")); out.flush(); out.close(); } catch (IOException e) { log.error(e.getMessage()); } }
5.util
public static Map<String, Object> getRandcodedDawTransparent() throws IOException { Map<String, Object> rsMap = new HashMap<>(); // 創(chuàng)建BufferedImage對象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 獲取Graphics2D Graphics2D g2d = image.createGraphics(); // 增加下面代碼使得背景透明 image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); g2d.dispose(); g2d = image.createGraphics(); g2d.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 18));// 字體大小 g2d.setColor(getRandColor(110, 133));// 字體顏色 // 繪制干擾線 for (int i = 0; i <= lineSize; i++) { drowLine(g2d, width, height); } // 繪制隨機字符 String randomString = ""; for (int i = 1; i <= stringNum; i++) { randomString = drowString(g2d, randomString, i); } log.info(randomString); rsMap.put("code", randomString); g2d.dispose(); ByteArrayOutputStream baos = new ByteArrayOutputStream();// io流 ImageIO.write(image, "png", baos);// 寫入流中 byte[] bytes = baos.toByteArray();// 轉(zhuǎn)換成字節(jié) bytes = Base64.encodeBase64(bytes); rsMap.put("img", bytes); return rsMap; }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
vue+elementUi 實現(xiàn)密碼顯示/隱藏+小圖標變化功能
這篇文章主要介紹了vue+elementUi 實現(xiàn)密碼顯示/隱藏+小圖標變化功能,需本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01Vue2 使用 Echarts 創(chuàng)建圖表實例代碼
本篇文章主要介紹了Vue2 使用 Echarts 創(chuàng)建圖表實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Vue組件大全包括(UI組件,開發(fā)框架,服務(wù)端,輔助工具,應用實例,Demo示例)
本文為大家分享了網(wǎng)上比較流行的Vue組件,包括UI組件,開發(fā)框架,服務(wù)端,輔助工具,應用實例,Demo示例等開源項目,總有一款適合你2018-10-10vue中回調(diào)函數(shù)(callback)的用法舉例
這篇文章主要給大家介紹了關(guān)于vue中回調(diào)函數(shù)(callback)的用法舉例,所謂的回調(diào)函數(shù),就是由調(diào)用函數(shù)提供執(zhí)行代碼,被調(diào)用函數(shù)執(zhí)行完畢之后,再自動執(zhí)行的一個函數(shù),需要的朋友可以參考下2023-08-08vue實現(xiàn)微信公眾號h5跳轉(zhuǎn)小程序的示例代碼
本文主要介紹了vue實現(xiàn)微信公眾號h5跳轉(zhuǎn)小程序的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08