首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中添加动态验证码

如何在Java中添加动态验证码
EN

Stack Overflow用户
提问于 2013-04-28 22:59:25
回答 3查看 1.8K关注 0票数 0

我想在page.Whenever上添加动态验证码超过3个请求来自同一IP地址的特定时间,然后验证码将出现在屏幕上。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-28 23:02:51

servlet

  • 您可以在servlet筛选器中编写代码,检查在特定持续时间内是否有多个请求来自特定IP。在这种情况下,您可以在会话中添加一些标志。

  • 使用此标志在页面上检查是否显示验证码。
票数 3
EN

Stack Overflow用户

发布于 2013-04-28 23:07:54

  • 创建一个动态创建验证码的servlet。要创建验证码,您可以结合使用im4java.
  • In和ImageMagick,您的HTML页面会嵌入一个带有生成验证码的servlet路径的图像标记。
  • 计算会话中向生成验证码的servlet发出的请求数。只要未达到阈值,您就可以返回一个空图像,以避免客户端出现任何错误。
  • 如果已达到阈值,则会生成验证码。在会话中存储该值(即用户必须输入才能继续的值)。
  • 用户看到验证码,必须输入其验证码使用会话中存储的值输入用户输入的值。

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2016-12-23 14:10:19

CAPTCHA (完全自动化的公共图灵测试,以区分计算机和人类)是一种确定用户是否是人类的测试。

CAPTCHA提供了一种阻止机器人与你的站点交互的方法,它提供了一些让它们很难阅读,但对人们来说很容易阅读的东西。

代码语言:javascript
运行
复制
import java.util.Random;
public class GenerateCaptcha {
      /**
       * Generate Length between 5 and 8.
       * @return return length.
       */
      private static int generateRandomLength() {
            int length = 5 + Math.abs((random.nextInt()%4));
            return length;
      }

      /**
       *  Generate a CAPTCHA String consisting of random
       *  lower case & upper case letters, and numbers.
       */
      private static String generateCaptchaString(int length) {

            StringBuffer captchaBuffer = new StringBuffer();

            for (int i = 0; i < length; i++) {

                  /** Generate the Random Character between 0 to 61.
                   * NOTE: Take abs value, because there may
                   * be ArrayIndexOutOfBount
                   * Exception for negative number*/
                  int rndCharIdx = Math.abs(random.nextInt()) % 62;

                  char character = characters[rndCharIdx];

                  captchaBuffer.append(character);
            }
            return captchaBuffer.toString();
      }

      private static Character[] characters = {'a','b','c','d','e','f',
            'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u',
            'v','w','x','y','z','A','B','C','D','E','F','G','H','I','J',
            'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',
            'Z','0','1','2','3','4','5','6','7','8','9'};

      private static Random random = new Random();

      public static void main(String[] args) {

            int rndmCaptchaLen = generateRandomLength();

            String captcha = generateCaptchaString(rndmCaptchaLen);

            System.out.println("Random Captcha #"+captcha);
      }
}

在我的博客上有更多信息:

http://javaexplorer03.blogspot.in/2016/12/program-to-generate-unique-captcha-to.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16264165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档