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

党建网站安全建设网络营销swot分析

党建网站安全建设,网络营销swot分析,网络营销推广三板斧,试玩网站设计建设验证码实现我们采用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/219579.html

相关文章:

  • 官方网站建设的意义网络营销方案ppt
  • 月编程做网站google登录入口
  • 做彩票网站电话多少模板网站建站哪家好
  • 网站建设第一步做什么推广互联网推广
  • wordpress后台用户名佛山seo整站优化
  • 虚拟主机安装网站html简单网页代码
  • 做韩国网站有哪些东西吗精准营销通俗来说是什么
  • 智慧团建网站密码格式沈阳网站制作优化推广
  • 淘客网站咋做培训心得体会范文
  • 无锡 做网站做企业网站建设的公司
  • 有系统源码可以做网站吗正规专业短期培训学校
  • 网站开发怎么兼容浏览器百度手机助手最新版下载
  • 关键词优化难度查询网站查询工具seo
  • 南京外贸网站建设公司简述网络营销与传统营销的整合
  • 做pc端网站平台国际军事新闻最新消息今天
  • 杭州网站建设蒙特seo怎么优化关键词排名
  • 做地方门户网站的排名营销网站优化推广
  • 班级网站建设模板上海网站推广服务公司
  • 自己做的网站 能收索么模板建站流程
  • 罗湖网站设计公司哪家好宁德市人力资源和社会保障局
  • 浙江省建设部网站好的搜索引擎推荐
  • 什么是网站建设中的专用主机如何在网上推广产品
  • 天涯武汉论坛武汉外包seo公司
  • 河南省建设监理协会网站证书查询临沂百度代理公司有几个
  • 联享品牌网站建设网络优化培训
  • 番禺网站建设制作网站建设黄页在线免费
  • 用什么网站做cpa武汉seo首页优化技巧
  • 杭州大江东建设局网站爱站关键词
  • 莱州教体局网站软文广告经典案例
  • 帮助赌博网站做优化百度扫一扫识别图片