• vue+springboot的登录图片验证码(前端对接报错)


    tip:这个只是一个效果实际要运用,还是需要改改滴!

    后台Java自带的 

    本来我是打算用第三方库的,没有整出来,就跟沈某人说不会来着,他说最好用Java自带的,

    不然换个系统第三方的就不能用了,大概就是什么写在系统里面的,具体我也不太清楚,

    不过后期有时间,我也会在研究一下这个第三方库,试一下写个笔记

    CodeUtils

    1. package com.example.utils;
    2. import java.awt.*;
    3. import java.awt.image.BufferedImage;
    4. import java.util.HashMap;
    5. import java.util.Map;
    6. import java.util.Random;
    7. public class CodeUtils {
    8. public static Map generateRandomCode() {
    9. int width = 120;
    10. int height = 40;
    11. // 创建一个宽度为120,高度为40的RGB类型的BufferedImage对象
    12. BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    13. Graphics g = image.getGraphics();
    14. Random random = new Random();
    15. // 设置背景色,使用随机颜色
    16. g.setColor(new Color(random.nextFloat(), random.nextFloat(), random.nextFloat()));
    17. g.fillRect(0, 0, width, height);
    18. // 绘制黑色边框
    19. g.setColor(Color.BLACK);
    20. g.drawRect(0, 0, width - 1, height - 1);
    21. // 设置字体样式
    22. Font font = new Font("Times New Roman", Font.BOLD, 20);
    23. g.setFont(font);
    24. StringBuilder captchaText = new StringBuilder();
    25. String chars = "0123456789";
    26. for (int i = 0; i < 4; i++) {
    27. int index = random.nextInt(chars.length());
    28. char randomChar = chars.charAt(index);
    29. captchaText.append(randomChar);
    30. // 使用随机颜色绘制验证码文本
    31. g.setColor(new Color(random.nextFloat(), random.nextFloat(), random.nextFloat()));
    32. g.drawString(String.valueOf(randomChar), 20 * i + 10, 25);
    33. }
    34. Map result = new HashMap<>();
    35. result.put("image", image);
    36. result.put("text", captchaText.toString());
    37. g.dispose(); // 释放绘图资源
    38. return result; // 返回生成的验证码图片
    39. }
    40. }

    CaptureController

    1. package com.example.controller;
    2. import com.example.utils.CodeUtils;
    3. import lombok.SneakyThrows;
    4. import org.springframework.web.bind.annotation.GetMapping;
    5. import org.springframework.web.bind.annotation.RequestMapping;
    6. import org.springframework.web.bind.annotation.RestController;
    7. import javax.imageio.ImageIO;
    8. import javax.servlet.http.HttpServletResponse;
    9. import java.awt.image.BufferedImage;
    10. import java.util.Map;
    11. @RestController
    12. @RequestMapping("/")
    13. public class CaptureController {
    14. @SneakyThrows
    15. @GetMapping("/captcha")
    16. public String getCaptcha(HttpServletResponse response) {
    17. Map map = CodeUtils.generateRandomCode();
    18. response.setContentType("image/png");
    19. ImageIO.write((BufferedImage)map.get("image"), "png", response.getOutputStream());
    20. return String.valueOf(map.get("text"));
    21. }
    22. }

    前端vue

    前端问题1

    只有  localhost:9090/captcha   这个路径显示

     我在前端的路径不显示

     现在想办法将后台路径改成170.0.0.1


    如何将后端Java传来的接口转换为HTTP请求,以便在前端显示。

    后端接口:http://localhost:9090/captcha

    前端接口:http://127.0.0.1:5174/captcha

    我是一个大憨批,那个    /     代表的  http://127.0.0.1:5174

    粗心得不得了,在下面的图片路径前增加了一个    /    所以导致验证码图片一直加载不出来

    我感觉这应该是一个跨域请求之类的,用get、post... ...

     

     前端代码

    1. // 定义响应式数据
    2. const form = ref({
    3. captcha: ''
    4. });
    5. // 获取验证码图片的URL,假设后端接口为 /captcha
    6. const captchaUrl = ref('');
    7. // 点击验证码图片刷新验证码
    8. const refreshCaptcha = () => {
    9. // 从后端获取新的验证码图片URL
    10. fetchCaptchaImage();
    11. };
    12. // 从后端获取验证码图片的方法
    13. const fetchCaptchaImage = () => {
    14. fetch('http://localhost:9090/captcha')
    15. .then(response => response.blob())
    16. .then(blob => {
    17. captchaUrl.value = URL.createObjectURL(blob);
    18. })
    19. .catch(error => {
    20. console.error('Error fetching captcha image', error);
    21. });
    22. };
    23. fetchCaptchaImage(); // 页面加载后获取验证码图片

     这只是大概实现了表面的功能,

    应该还需要写一个逻辑使输入的验证码和图片的验证码相匹配,

    且登录逻辑里面需要加一个验证码的判断。

  • 相关阅读:
    源码:TMS FlexCel Studio for .NET 7.19
    JVM_JVM启动参数及堆内存分布及GC触发条件
    【货干】IP 配置出现意外。
    Multitor:一款带有负载均衡功能的多Tor实例创建工具
    【毕业设计】深度学习卫星遥感图像检测与识别 -opencv python 目标检测
    接口自动化测试工具大全
    mysql日志(错误日志、binlog日志、查询日志、慢日志)
    QT 客户端软件开发
    Java 15 新特性:隐藏类
    GBase 8c V3.0.0数据类型——HLL函数和操作符(内置函数)
  • 原文地址:https://blog.csdn.net/Mmj_mmj/article/details/138153798