当前位置: 首页 > wzjs >正文

四川建设行业网站有哪些魏县做网站的

四川建设行业网站有哪些,魏县做网站的,个人网页背景图,2_试列出网站开发建设的步骤验证码实现我们采用Kaptcha 框架,它是谷歌开源的一个可高度配置的实用验证码生成工具。 我们这次实现的验证码思路是:用户访问注册页面时,我们先将图形验证码在服务端生成,并存到redis中,再将该图形验证码返回给用户界…

验证码实现我们采用Kaptcha 框架,它是谷歌开源的一个可高度配置的实用验证码生成工具。

我们这次实现的验证码思路是:用户访问注册页面时,我们先将图形验证码在服务端生成,并存到redis中,再将该图形验证码返回给用户界面,用户输入图形验证码的值之后,点击"发送验证码"的同时,也会将电话号码以及图形验证码也一同带到服务端,服务端把接收到的图形验证码跟redis中图形验证码是否一致。

首先我们要添加kaptcha依赖包:

<dependency><groupId>com.baomidou</groupId><artifactId>kaptcha-spring-boot-starter</artifactId><version>1.0.0</version></dependency>

验证码的配置类:

@Configuration
public class CaptchaConfig {
​/*** 验证码配置* Kaptcha配置类名* * @return*/@Bean@Qualifier("captchaProducer")public DefaultKaptcha kaptcha() {DefaultKaptcha kaptcha = new DefaultKaptcha();Properties properties = new Properties();//验证码个数properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");//字体间隔properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"8");//干扰线颜色
​//干扰实现类properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
​//图片样式properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple");
​//文字来源properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789");Config config = new Config(properties);kaptcha.setConfig(config);return kaptcha;}
}

配置CommonUtil工具类:

public class CommonUtil {/*** 获取ip* @param request* @return*/public static String getIpAddr(HttpServletRequest request) {String ipAddress = null;try {ipAddress = request.getHeader("x-forwarded-for");if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("WL-Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getRemoteAddr();if (ipAddress.equals("127.0.0.1")) {// 根据网卡取本机配置的IPInetAddress inet = null;try {inet = InetAddress.getLocalHost();} catch (UnknownHostException e) {e.printStackTrace();}ipAddress = inet.getHostAddress();}}// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割if (ipAddress != null && ipAddress.length() > 15) {// "***.***.***.***".length()// = 15if (ipAddress.indexOf(",") > 0) {ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));}}} catch (Exception e) {ipAddress="";}return ipAddress;}public static String MD5(String data)  {try {java.security.MessageDigest md = MessageDigest.getInstance("MD5");byte[] array = md.digest(data.getBytes("UTF-8"));StringBuilder sb = new StringBuilder();for (byte item : array) {sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));}return sb.toString().toUpperCase();} catch (Exception exception) {}return null;}
}

还有配置JsonData响应工具类,方便我们查看结果:

public class JsonData {/*** 状态码 0 表示成功*/private Integer code;/*** 数据*/private Object data;/*** 描述*/private String msg;public JsonData(int code,Object data,String msg){this.code = code;this.data = data;this.msg = msg;}/*** 成功,不传入数据* @return*/public static JsonData buildSuccess() {return new JsonData(0, null, null);}/***  成功,传入数据* @param data* @return*/public static JsonData buildSuccess(Object data) {return new JsonData(0, data, null);}/*** 失败,传入描述信息* @param msg* @return*/public static JsonData buildError(String msg) {return new JsonData(-1, null, msg);}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}
}

接下来我们就可以进行接口的开发:

@RestController
@RequestMapping("/api/v1/captcha")
public class CaptchaController {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Autowiredprivate Producer captchaProducer;/*** 获取图形验证码* @param request* @param response*/@GetMapping("get_captcha")public void getCaptcha(HttpServletRequest request, HttpServletResponse response){String captchaText = captchaProducer.createText();String key = getCaptchaKey(request);stringRedisTemplate.opsForValue().set(key,captchaText,10, TimeUnit.MINUTES);BufferedImage bufferedImage = captchaProducer.createImage(captchaText);ServletOutputStream servletOutputStream = null;try {servletOutputStream = response.getOutputStream();ImageIO.write(bufferedImage,"jpg",servletOutputStream);servletOutputStream.flush();servletOutputStream.close();}catch (Exception e){e.printStackTrace();}}/*** 发送验证码* @param to* @param captcha* @param request* @return*/@GetMapping("send_code")public JsonData sendCode(@RequestParam(value = "to",required = true)String to,@RequestParam(value = "captcha",required = true)String captcha,HttpServletRequest request){String key = getCaptchaKey(request);String cacheCaptcha  = stringRedisTemplate.opsForValue().get(key);if(captcha!=null && cacheCaptcha!=null && cacheCaptcha.equalsIgnoreCase(captcha)){stringRedisTemplate.delete(key);//TODO 发送验证码return JsonData.buildSuccess();}else {return JsonData.buildError("验证码错误");}}/*** 获取缓存的key* @param request* @return*/private String getCaptchaKey(HttpServletRequest request){String ip = CommonUtil.getIpAddr(request);String userAgent = request.getHeader("User-Agent");String key = "user-service:captcha:"+CommonUtil.MD5(ip+userAgent);return key;}
}

 

http://www.dtcms.com/wzjs/584684.html

相关文章:

  • 百度官网网站首页网站运营的提成方案怎么做
  • 河北建筑网站做古风文字头像的网站
  • 专门做网站公司妖姬直播
  • 帮助做问卷调查的网站沃尔玛网上商城中国
  • 电子工程网官方网站建设个网站多少钱
  • 学校建设网站费用申请怎么做新浪网站
  • 推荐网站建设建设工程管理条例
  • wordpress网站下载文件外国人做的古文字网站
  • 西安旅游网站开发群晖 套件 wordpress
  • 做网站推广和网络推广默认网站停止
  • 网站建设找哪个学院门户网站建设必要性
  • 想要导航网站推广怎么做深圳网站排名优化团队
  • 邳州微网站开发服装 网站规划方案
  • 深圳网站建设补助怎么做公司网站推广
  • 培训机构网站源码如何免费开个人网站
  • 绿色系的网站网络营销是什么样子的
  • 杭州做网站建设义乌网站建设方案详细
  • 做网站租用数据库请教 网站建设价格一般多少钱
  • 茶叶网站建设要求如何成立工作室
  • 自己有网站源码就可以建设吗seo优化排名服务
  • 大连手机自适应网站建设费用网站集约化建设的目的
  • 南阳网站建设培训网站建设朝阳
  • 兰州网站建设兰州网站上的销售怎么做的
  • 搭建一个购物网站seo怎么做教程
  • dedecms wap网站模板湖南做网站kaodezhu
  • 遵义市建设局网站wordpress升级php版本崩溃
  • 如何优化m网站wordpress 幻灯片插件
  • 洛阳公司青峰做的企业网站六安网新闻
  • 电商网站规划的开发背景网站硬件方案
  • 新民电商网站建设价格咨询wordpress菜单标题属性