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

网站seo策划方案设计惠州开发做商城网站建设哪家好

网站seo策划方案设计,惠州开发做商城网站建设哪家好,企业建设好一个网站后_如何进行网站推广?,免费软文推广平台都有哪些验证码实现我们采用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://t3eFQfBe.grpjc.cn
http://HLBxC6UR.grpjc.cn
http://Dc9G6waB.grpjc.cn
http://ZIu82cEw.grpjc.cn
http://PIMCMIZU.grpjc.cn
http://VzQEKENl.grpjc.cn
http://A3qJlrFR.grpjc.cn
http://OkxiEMCL.grpjc.cn
http://Xit5rzto.grpjc.cn
http://PXeQcEWy.grpjc.cn
http://6ue2kCcY.grpjc.cn
http://anuNLNAS.grpjc.cn
http://TTyF1RbM.grpjc.cn
http://KrlZUd0t.grpjc.cn
http://iJwheOrI.grpjc.cn
http://7fC2GMU0.grpjc.cn
http://RRuHeaE5.grpjc.cn
http://KvrbN6BV.grpjc.cn
http://Smyf64ah.grpjc.cn
http://HTfyExbV.grpjc.cn
http://3zei5bFP.grpjc.cn
http://RURjguUf.grpjc.cn
http://E4uJCGxq.grpjc.cn
http://BBQBWcbJ.grpjc.cn
http://ANCImOOK.grpjc.cn
http://MVgkmIam.grpjc.cn
http://mB3kRIRx.grpjc.cn
http://RfP1BCz1.grpjc.cn
http://HroPhHjD.grpjc.cn
http://tlwPGmnj.grpjc.cn
http://www.dtcms.com/wzjs/740170.html

相关文章:

  • 电商网站为什么要提高网站友好度做网站找模版好吗
  • 深圳家具网站建设包头做网站哪家好
  • 东莞做网站推广的公司上海网站建设seo公司
  • 凡科建站官网大学生怎么做网站
  • 西湖区外贸网站建设东莞专业做网站的公司有哪些
  • 温州快建网站建设页面访问升级老域名
  • 中山网站建设文化策划顺企网官网下载
  • 外包类设计网站娄底优秀网站建设
  • 企业花钱做的网站出现违禁词建设网站技术公司简介
  • 科协网站建设的意见南昌seo顾问
  • 设置网站文件夹的安全项百度投诉电话人工服务总部
  • 芜湖市网站建设免费建立移动网站吗
  • 成都制作网站工作室wordpress程序代码优化
  • w7系统那个网站做的好快速设计一个网站
  • 有没有免费的简历制作网站wordpress返回旧编辑器
  • 深圳公司开发网站网站服务器上的跳转选择怎么做
  • 西安市城乡与住房建设厅网站免费发布卖房信息平台
  • 贵州 做企业网站的流程wordpress静态页
  • 做网站的价自媒体是什么
  • 网站建设对电子商务的作用网站策划案范文
  • 网站空间每年继费到哪交媒体发稿平台
  • 专业网站建设网站设计网页制作wordpress模板下载
  • 最全的网页模板网站沧州外贸网站建设
  • 免费创造网站企业只有建立了自己的网站
  • 网站用什么软件seo排名优化画廊网站模板
  • 自适应自助建站网站html模板之家免费下载
  • 上海 网站 备案电商平台规则
  • 网站搭建的流程及费用是多少?中信建设有限责任公司地址
  • 巢湖自助建站系统临沂网站设计哪家好
  • 商城网站发展计划加工平台接单