java实现登录验证码功能

本文实例为大家分享了java实现登录验证码功能的具体代码,供大家参考,具体内容如下

登录验证码

登录验证是大多数登录系统都会用到的一个功能,它的验证方式也是有很多种,例如登录验证码,登录验证条及拼图拖动块等,这里讲讲输入登录验证码的方式来实现的例子。首先,kaptcha这是一个开源的验证码实现库,利用这个库可以非常方便的实现验证码功能。

1.添加依赖

在pom文件下添加kaptcha依赖包

<!-- https://mvnrepository.com/artifact/com.github.axet/kaptcha -->
    <dependency>
      <groupId>com.github.axet</groupId>
      <artifactId>kaptcha</artifactId>
      <version>0.0.9</version>
</dependency>

2.添加配置

新建config包,在该包下创建kaptcha配置类,配置验证码的一些生成属性。

KaptchaConfig.java

/**
 *  @author: yzy
 *  @Date: 2020/6/11 10:41
 *  @Description: 验证码的配置
 */
@Configuration
public class CaptchaConfig {

    @Bean
    public DefaultKaptcha producer() {
        Properties properties = new Properties();
        properties.put("kaptcha.border","no");
        properties.put("kaptcha.textproducer.font.color","black");
        properties.put("kaptcha.textproducer.char.space","5");
        Config config = new Config(properties);
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }

}

3.生成代码

新建一个控制器,提供系统登录相关的API,在其中添加验证码生成接口。

LoginController.java

/**
 *  @author: yzy
 *  @Date: 2020/6/11 10:58
 *  @Description: 登录控制器
 */
@RestController
public class LoginController {
    @Resource
    private Producer producer;

    /**
     * @Description:  验证码生成接口
     * @Author:       yzy
     * @Date:         2020/6/11 11:00
     * @Param:        response
     * @Param:        request
     * @Return:       void
     * @Exception
     *
     */
    @RequestMapping(value = "/captcha.jpg",method = RequestMethod.GET)
    public void captcha(HttpServletResponse response, HttpServletRequest request) {
        /**
         * Cache-Control指定请求和响应遵循的缓存机制
         * no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
         * no-cache:指示请求或响应消息不能缓存
         */
        response.setHeader("Cache-Control","no-store,no-cache");

        // 设置输出流内容格式为图片格式.image/jpeg,图片格式用于生成图片随机码
        response.setContentType("image/jpeg");

        // 生成文字验证码
        String text = producer.createText();

        // 生成图片验证码
        BufferedImage image = producer.createImage(text);

        // 保存验证码到session中
        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY,text);
        ServletOutputStream outputStream = null;
        try {
            outputStream = response.getOutputStream();
            ImageIO.write(image,"jpg",outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        IOUtils.closeQuietly(outputStream);
    }
}

测试接口

编译成功后,访问http://localhost:8010/swagger-ui.html,进入swagger测试页面,测试结果如图:
这样就大功告成了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • javaWeb使用验证码实现简单登录

    本文实例为大家分享了javaWeb使用验证码实现简单登录的具体代码,供大家参考,具体内容如下 简单的流程图 1.用户给第一次访问login.jsp页面时,会想服务器发送两个请求,一个请求是显示图片,还有一个是显示表单 2.第一个请求发送后 服务器中verifyServlet处理,随机生成验证码图片,并保存到session中,然后响应给客户端 3.第二个请求后 服务器LoginServlet处理,获取表单验证码,以及session中的验证码,再判断两个验证码是否相等,相等就向下执行即 succes

  • Java Web实现登录页面验证码验证功能

    一.验证码 验证码本质上是一张图片,图片内容会随着程序的运行而随机生成 验证码的作用:防止应用恶意发送数据,一定程度上避免了恶意程序对网站的攻击. 验证码本质上是一张图片,图片内容的准确解析不容易用程序来实现. 验证码的绘制:绘制验证码图片不仅仅需要随机生成要绘制的内容,同时要配合Java中与绘图有关的一套API来完成. 二.效果演示 验证码Demo 三.给出完整代码 (1)服务器端代码ActionServlet.java package session; import java.io.IOEx

  • Java中SSM+Shiro系统登录验证码的实现方法

     先给大家展示下效果图: 1.验证码生成类: import java.util.Random; import java.awt.image.BufferedImage; import java.awt.Graphics; import java.awt.Font; import java.awt.Color; /** * 验证码生成器类,可生成数字.大写.小写字母及三者混合类型的验证码. 支持自定义验证码字符数量: 支持自定义验证码图片的大小: 支持自定义需排除的特殊字符: * 支持自定义干扰线

  • Java web含验证码及权限登录实例代码

    所用到的开发工具为myeclipse10,MySQL数据库. 首先,在myeclipse中新建一个Java web项目. 项目的结构: 数据库结构: 下面将各个包中的代码粘贴出来. com.ningmeng.dao包 package com.ningmeng.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLExcept

  • java登录验证码实现代码

    VerifyCodeServlet.java类: 复制代码 代码如下: package com.spring.controller;import java.awt.Color;         import java.awt.Font;         import java.awt.Graphics2D;         import java.awt.image.BufferedImage;         import java.util.Random;         import ja

  • java实现登录验证码

    本文实例为大家分享了java实现登录验证码的具体代码,供大家参考,具体内容如下 1.ValidateCode.java import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random;

  • Java Web制作登录验证码实现代码解析

    图例如下 具体操作如下: 新建一个servlet,代码如下:标记一个WebServlet, 1 @WebServlet(urlPatterns = {"/checkCode"}) //验证码Servlet 绘制验证码图片的核心代码: int width = 100; int height = 50; //创建图片对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); /

  • JavaWeb简单用户登录注册实例代码(有验证码)

    需求 编写login登录界面(用户名,密码,验证码,登陆按钮,注册按钮) 设计关系数据库(编号,用户名,密码) 编写注册功能,将数据存储在数据库中.(姓名不能重复,设为主键,重复会注册失败) 编写登录功能 .首先获取验证码,先判断验证码是否正确,不正确则显示验证码错误.验证码正确后再获取用户名和密码,进行数据库的搜索比对,若正确则重定向到成功的界面,并且将用户名显示. jar包 技术选型 Servlet + JSP + Mysql + JDBCTemplate + Druid + BeanUti

  • javaweb登录验证码的实现方法

    本文实例为大家分享了javaweb登录验证码的具体代码,供大家参考,具体内容如下 使用: Controller:生成验证码 @RequestMapping("/user/check.jpg") public void createCode(HttpServletRequest request, HttpServletResponse response) throws IOException { // 通知浏览器不要缓存 response.setHeader("Expires&

  • java如何生成登录随机验证码

    本文实例为大家分享了java生成登录随机验证码的具体代码,供大家参考,具体内容如下 验证码工具类: VerifyUtil.java import java.awt.*; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; public class VerifyUtil { // 验证码字符集 private static fina

随机推荐