栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

EasyCaptcha 登录 验证码 springboot

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EasyCaptcha 登录 验证码 springboot

验证码展示

1,引入依赖    验证码存储到redis里需要引入redis依赖

        
        
            com.github.whvcse
            easy-captcha
            1.6.2
        

      
        
            org.springframework.boot
            spring-boot-starter-data-redis
        

 controller层代码

@Autowired
    private RedisTemplate redisTemplate;

    @ResponseBody
    @GetMapping("/captcha")
    @CrossOrigin
    public R captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
        SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);

        String verCode = specCaptcha.text().toLowerCase();
        String key = UUID.randomUUID().toString();
        // 存入redis并设置过期时间为30分钟

        redisTemplate.opsForValue().set(key,verCode, 30, TimeUnit.MINUTES);

        // 将key和base64返回给前端
        HashMap map = new HashMap<>();
        map.put("key", key);
        map.put("image", specCaptcha.toBase64());
        map.put("verCode",verCode);
        return R.ok(map);
    }

    @ResponseBody
    @PostMapping("/login")
    @CrossOrigin
    public R login(String username,String password,String verCode,String verKey){

        // 获取redis中的验证码

        String redisCode = (String)redisTemplate.opsForValue().get(verKey);
        System.out.println("redisCode = " + redisCode);
        System.out.println("verCode.trim() = " + verCode.trim());

        // 判断验证码
        if (verCode==null || !redisCode.equals(verCode.trim().toLowerCase())) {

            return R.fail("验证码不正确");
        }
        return R.ok(redisCode);
    }

R为自定义返回类型  

@Data
public class R {
    private int code;
    private String msg;
    private Object data;
    //贫血模式 充血模式 DDD模型
    public static R createR(int code,String msg,Object data){
        R r=new R();
        r.setCode(code);
        r.setData(data);
        r.setMsg(msg);
       return r;
    }
    public static R ok(String msg,Object data){
       return createR(200,msg,data);
    }
    public static R ok(Object data){
        return createR(200,"OK",data);
    }
    public static R ok(){
        return createR(200,"OK",null);
    }
    public static R fail(String msg){
        return createR(400,msg,null);
    }

 生成数据存储在redis里的样式

返回前段的数据样式

 image 直接引用即可,不用转换(image 数据浏览器打开就是图一(第一张图片 ,验证码展示图片))

详细请参考官方地址:EasyCaptcha: Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。 (gitee.com)

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号