使用Jcaptcha验证码产生个数不对的问题
使用Jcaptcha验证码产生个数不对的问题
美丽不打折 发表于2年前
使用Jcaptcha验证码产生个数不对的问题
  • 发表于 2年前
  • 阅读 20
  • 收藏 0
  • 点赞 3
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Jcaptcha在Spring中设置最大字符长度无效的问题

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:flex="http://www.springframework.org/schema/flex"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">

    <!--验证码服务  -->
    <bean id="captchaService"
        class="com.octo.captcha.service.multitype.GenericManageableCaptchaService">
        <constructor-arg index="0" ref="imageEngine" />
        <constructor-arg type="int" index="1" value="180" /> <!--有效期300秒  -->
        <constructor-arg type="int" index="2" value="100000" />
    </bean>

    <!-- 图片引擎 -->
    <bean id="imageEngine" class="com.octo.captcha.engine.GenericCaptchaEngine">
        <constructor-arg index="0">
            <list>
                <ref bean="captchaFactory" />
            </list>
        </constructor-arg>
    </bean>

    <bean id="captchaFactory" class="com.octo.captcha.image.gimpy.GimpyFactory">
        <constructor-arg>
            <ref bean="wordgen" />
        </constructor-arg>
        <constructor-arg>
            <ref bean="wordtoimage" />
        </constructor-arg>
    </bean>

    <bean id="wordgen"
        class="com.octo.captcha.component.word.wordgenerator.RandomWordGenerator">
        <!--可选字符 -->
        <constructor-arg>
            <value>
             0123456789ABCDEFGHIJKLNMOPQRSTUVWXYZ
            </value>
        </constructor-arg>
    </bean>

    <bean id="wordtoimage"
        class="com.octo.captcha.component.image.wordtoimage.ComposedWordToImage">
        <constructor-arg index="0">
            <ref bean="fontGenRandom" />
        </constructor-arg>
        <constructor-arg index="1">
            <ref bean="backGenUni" />
        </constructor-arg>
        <constructor-arg index="2">
            <ref bean="decoratedPaster" />
        </constructor-arg>
    </bean>

    <bean id="fontGenRandom"
        class="com.octo.captcha.component.image.fontgenerator.RandomFontGenerator">
        <!--最小字体 -->
        <constructor-arg index="0">
            <value>20</value>
        </constructor-arg>
        <!--最大字体 -->
        <constructor-arg index="1">
            <value>26</value>
        </constructor-arg>
        <constructor-arg index="2">
            <list>
                <bean class="java.awt.Font">
                    <constructor-arg index="0">
                        <value>Arial</value>
                    </constructor-arg>
                    <constructor-arg index="1">
                        <value>0</value>
                    </constructor-arg>
                    <constructor-arg index="2">
                        <value>10</value>
                    </constructor-arg>
                </bean>
                
               <bean class="java.awt.Font">
                    <constructor-arg index="0">
                        <value>Tahoma</value>
                    </constructor-arg>
                    <constructor-arg index="1">
                        <value>0</value>
                    </constructor-arg>
                    <constructor-arg index="2">
                        <value>10</value>
                    </constructor-arg>
                </bean>
            </list>
        </constructor-arg>
    </bean>

    <bean id="backGenUni"
        class="com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator">
        <!--背景宽度 -->
        <constructor-arg index="0">
            <value>100</value>
        </constructor-arg>
        <!--背景高度 -->
        <constructor-arg index="1">
            <value>40</value>
        </constructor-arg>
    </bean>

    <bean id="decoratedPaster"
        class="com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster">
        <!--最大字符长度 -->
        <constructor-arg type="java.lang.Integer" index="0">
            <value>6</value>
        </constructor-arg>
        <!--最小字符长度 -->
        <constructor-arg type="java.lang.Integer" index="1">
            <value>6</value>
        </constructor-arg>
        <!--文本颜色 -->
        <constructor-arg index="2">
            <ref bean="colorGen" />
        </constructor-arg>
        <!--文本混淆 -->
        <constructor-arg index="3">
            <list>
            <!--      <ref bean="baffleDecorator"/>   -->
            </list>
        </constructor-arg>
    </bean>

    <bean id="baffleDecorator"
        class="com.octo.captcha.component.image.textpaster.textdecorator.BaffleTextDecorator">
        <constructor-arg type="java.lang.Integer" index="0">
            <value>1</value>
        </constructor-arg>
        <constructor-arg type="java.awt.Color" index="1">
            <ref bean="colorWrite" />
        </constructor-arg>
    </bean>

    <bean id="colorGen"
        class="com.octo.captcha.component.image.color.SingleColorGenerator">
        <constructor-arg type="java.awt.Color" index="0">
            <ref bean="colorDimGrey" />
        </constructor-arg>
    </bean>

    <bean id="colorWrite" class="java.awt.Color">
        <constructor-arg type="int" index="0">
            <value>12</value>
        </constructor-arg>
        <constructor-arg type="int" index="1">
            <value>55</value>
        </constructor-arg>
        <constructor-arg type="int" index="2">
            <value>25</value>
        </constructor-arg>
    </bean>

    <bean id="colorDimGrey" class="java.awt.Color">
        <constructor-arg type="int" index="0">
            <value>123</value>
        </constructor-arg>
        <constructor-arg type="int" index="1">
            <value>29</value>
        </constructor-arg>
        <constructor-arg type="int" index="2">
            <value>0</value>
        </constructor-arg>
    </bean>

</beans>
 

明明最小长度验证码是6位, 最大长度验证码也是6位,但是产生验证码的时候为什么会出现四位,五位那么奇怪的现象呢?因为Spring脑残的解析机制啊。

 

            <value>
             0123456789ABCDEFGHIJKLNMOPQRSTUVWXYZ
            </value>

 

改成

 

            <value>0123456789ABCDEFGHIJKLNMOPQRSTUVWXYZ</value>

 

这么改一改就行了哦。上网百度一下这个问题发现好多人在问呢,结果没有人回答。这里我就放上解决方案和原因吧。谁叫我那么善良美丽呢。哦呵呵呵

共有 人打赏支持
粉丝 43
博文 10
码字总数 6023
×
美丽不打折
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: