分享一个图片验证码功能的实现

项目地址

https://github.com/smallsnail-wh/wh-validate

实现原理

  1. /validate/imag请求获取验证码图片,并将验证码信息存入session。
  2. 使用filter来验证请求中验证码是否正确。
  3. 提供ImageCodePropertiesConfigurerAdapter和ValidateCodeGenerator 来自定义验证码图片。

使用方法

  • 将项目中com.wh.validate.demo包中的所有代码copy到你的项目,完成相关依赖的导入(可参考此项目本身)。
  • 项目提供默认网址:/validate/image,来获取验证码图片。
  • 实现ImageCodePropertiesConfigurerAdapter接口并注册为bean,配置需要验证的url,可配置多个。
    注意 验证请求中必须以 imageCode=”XXXX”(XXXX为验证字符串),这样的参数形式传入。(若验证请求为post形式,数据格式必须为application/x-www-form-urlencoded)
@Component
public class ImageCodePropertiesConfigurerAdapterTemp implements ImageCodePropertiesConfigurerAdapter {

    @Override
    public void imageCodePropertiesConfigure(ImageCodeDefaultProperties imageCodeDefaultProperties) {
        imageCodeDefaultProperties.setUrl("/login","/logintest");
    }

}
  • 如果验证错误会返回json
    {“error”:403,”message”:”验证码不匹配”}

自定义配置

分两种情况:1.完全使用你自己的图片验证码样式。2,使用此项目图片验证样式,但是改变宽高,以及验证码字符数量和验证码过期时间。

如果完全使用你自己的图片验证码样式,你需要实现ValidateCodeGenerator并注册为bean。在createImageCode中返回ImageCode

@Component
public class ImageCodeGenertorTemp implements ValidateCodeGenerator {

    @Override
    public ImageCode createImageCode(HttpServletRequest req) throws IOException {
        //你生产的验证码图片
        BufferedImage image;
        //验证码图片对应的字符串
        String code;
        //过期时间(单位秒)
        int expireIn;

        ImageCode imageCode = new ImageCode(image,code,expireIn);
        return imageCode;
    }

}

如果使用此项目图片验证样式,但是改变宽高,以及验证码字符数量和验证码过期时间,你可以直接在实现ImageCodePropertiesConfigurerAdapter接口的那个类中,直接配置。

@Component
public class ImageCodePropertiesConfigurerAdapterTemp implements ImageCodePropertiesConfigurerAdapter {

    @Override
    public void imageCodePropertiesConfigure(ImageCodeDefaultProperties imageCodeDefaultProperties) {
        imageCodeDefaultProperties.setSize(5).setHeight(50).setWidth(200).setExpireIn(60).setUrl("/login","/logintest");
    }

}
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很高兴为您介绍垃圾分类网页的设计及实现,以下是我个人的建议: 1. 界面设计 垃圾分类网页的界面应该简洁、明了、清晰,并使用清新的配色。可以使用大量的图标、图片和简单的文字来传达信息。可以使用不同的颜色或图标来区分不同的垃圾类型。 2. 垃圾分类信息 网页上应该提供丰富的垃圾分类信息,包括垃圾分类的定义、分类标准、分类方法、垃圾处理方法等等。另外,网页上也可以提供一些有用的垃圾分类小贴士,如如何正确地分类垃圾、如何减少垃圾污染等等。 3. 搜索功能 网页上应该设有搜索功能,方便用户快速查找垃圾分类信息。搜索框应该设在页面的显眼位置,便于用户操作。 4. 交互功能 网页上也应该提供一些交互功能,如用户可以上传照片或描述,让系统帮助判断垃圾类型。用户也可以评论或分享自己的垃圾分类经验。 5. 响应式设计 垃圾分类网页应该具有响应式设计,可以适应不同终端设备的屏幕大小、分辨率和操作方式。这样,用户可以在任何设备上访问和使用网页,享受垃圾分类的便利。 实现方案: 1. 开发语言 可以使用HTML、CSS和JavaScript等前端开发语言进行开发,后端可以使用PHP、Python或Java等语言实现。 2. 数据库 可以使用MySQL或MongoDB等数据库技术存储用户上传的照片和描述信息等。 3. 垃圾分类算法 可以使用深度学习等算法来实现垃圾分类功能,例如使用卷积神经网络分类图像数据。 4. 服务器 可以使用云服务器或自己的服务器来部署网页应用程序,提供用户访问服务。 5. 安全性 要保证用户上传的信息安全可靠,可以使用HTTPS协议进行数据传输,使用验证码等技术防止恶意攻击。 总之,垃圾分类网页的设计及实现需要考虑多个方面,包括界面设计、功能实现、安全性等等,希望我的建议能够对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值