亚游,北京文化2015年11月公告称,子公司北京摩天轮文化传媒有限公司的控股子公司北京功做事影视文化有限公司拟参与电影《铁道飞虎》的投资。该片暂由功做事与北京耀莱影视文化传媒有限公司联合投资,功做事投资金额为3000万元。

重组完成后,*ST黑豹成为沈飞集团惟一股东,主营业务由专用车、微小卡和液压零部件业务转变为航空产品制造业务。小投资冷门暴利行业专家分析认为,十八大以来,中国军队致力于“能打仗,打胜仗”的部队建设,三大舰队如此高频率的联合演习,表明中国海军在作战指挥控制能力、侦察预警能力、通信能力、后勤保障能力以及海上整体防御作战能力等方面有了很大提高。

发布于 2018-03-23 17:23:57 | 141 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Redis 官方指南,程序狗速度看过来!

Redis Key-Value数据库

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。


本章简单介绍redis的配置及使用方法,本文示例代码在前面代码的基础上进行修改添加,实现了使用redis进行缓存验证码,以及校验验证码的过程。感兴趣的的朋友一起看看吧

本章简单介绍redis的配置及使用方法,本文示例代码在前面代码的基础上进行修改添加,实现了使用redis进行缓存验证码,以及校验验证码的过程。

1、添加依赖库(添加redis库,以及第三方的验证码库)


       <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-redis</artifactId> 
</dependency> 
<dependency> 
  <groupId>cn.apiclub.tool</groupId> 
  <artifactId>simplecaptcha</artifactId> 
  <version>1.2.2</version> 
</dependency> 

2、在application.properties中添加redis的配置信息


spring.redis.database=4 
spring.redis.host=hostname 
spring.redis.password=password 
spring.redis.port=6379 
spring.redis.timeout=2000 
spring.redis.pool.max-idle=8 
spring.redis.pool.min-idle=0 
spring.redis.pool.max-active=8 
spring.redis.pool.max-wait=-1 

3、添加redis数据模版

新增RedisConfig.Java


package com.xiaofangtech.sun.config; 
import org.springframework.context.annotation.Bean; 
import org.springframework.data.redis.connection.RedisConnectionFactory; 
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; 
import org.springframework.data.redis.core.RedisTemplate; 
import org.springframework.data.redis.serializer.StringRedisSerializer; 
public class RedisConfig { 
  @Bean 
  JedisConnectionFactory jedisConnectionFactory() { 
    return new JedisConnectionFactory(); 
  } 
  @Bean RedisTemplate<String, String>redisTemplate(RedisConnectionFactory factory) 
  { 
    RedisTemplate<String, String> template = new RedisTemplate<String, String>(); 
    template.setConnectionFactory(jedisConnectionFactory()); 
    template.setKeySerializer(new StringRedisSerializer()); 
    template.setValueSerializer(new StringRedisSerializer()); 
    return template; 
  } 
} 

4、redis的基本使用(缓存生成的验证码信息)

新建CaptchaModule.java,涉及redis插入操作关键代码


@Autowired 
  private RedisTemplate<String, String> redisTemplate; 
/将验证码以<key,value>形式缓存到redis 
    redisTemplate.opsForValue().set(uuid, captcha.getAnswer(), captchaExpires, TimeUnit.SECONDS); 

完整代码


package com.xiaofangtech.sunt.utils; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.util.UUID; 
import java.util.concurrent.TimeUnit; 
import javax.imageio.ImageIO; 
import javax.servlet.http.Cookie; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.data.redis.core.RedisTemplate; 
import org.springframework.http.MediaType; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RestController; 
import cn.apiclub.captcha.Captcha; 
import cn.apiclub.captcha.backgrounds.GradiatedBackgroundProducer; 
import cn.apiclub.captcha.gimpy.FishEyeGimpyRenderer; 
@RestController 
@RequestMapping("captcha") 
public class CaptchaModule { 
  @Autowired 
  private RedisTemplate<String, String> redisTemplate; 
  private static int captchaExpires = 3*60; /超时时间3min 
  private static int captchaW = 200; 
  private static int captchaH = 60; 
  @RequestMapping(value = "getcaptcha", method = RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE) 
  public @ResponseBody byte[] getCaptcha(HttpServletResponse response) 
  { 
    /生成验证码 
    String uuid = UUID.randomUUID().toString(); 
    Captcha captcha = new Captcha.Builder(captchaW, captchaH) 
        .addText().addBackground(new GradiatedBackgroundProducer()) 
        .gimp(new FishEyeGimpyRenderer()) 
        .build(); 
    /将验证码以<key,value>形式缓存到redis 
    redisTemplate.opsForValue().set(uuid, captcha.getAnswer(), captchaExpires, TimeUnit.SECONDS); 
    /将验证码key,及验证码的图片返回 
    Cookie cookie = new Cookie("CaptchaCode",uuid); 
    response.addCookie(cookie); 
    ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
    try { 
      ImageIO.write(captcha.getImage(), "png", bao); 
      return bao.toByteArray(); 
    } catch (IOException e) { 
      return null; 
    } 
  } 
} 

5、redis内容的获取(根据key获取验证码)

完善前面获取token的流程,在获取token的接口中添加校验验证码的流程(根据登录参数中的验证码id获取验证码内容,并与登录参数中的验证码内容进行比对)

修改JsonWebToken.java


@Autowired 
  private RedisTemplate<String, String> redisTemplate; 
/验证码校验在后面章节添加 
String captchaCode = loginPara.getCaptchaCode(); 
try { 
  if (captchaCode == null) 
  { 
    throw new Exception(); 
  } 
  String captchaValue = redisTemplate.opsForValue().get(captchaCode); 
  if (captchaValue == null) 
  { 
    throw new Exception(); 
  } 
  redisTemplate.delete(captchaCode); 
  if (captchaValue.compareTo(loginPara.getCaptchaValue()) != 0) 
  { 
    throw new Exception(); 
  } 
} catch (Exception e) { 
  resultMsg = new ResultMsg(ResultStatusCode.INVALID_CAPTCHA.getErrcode(),  
      ResultStatusCode.INVALID_CAPTCHA.getErrmsg(), null); 
  return resultMsg; 
} 

6、测试

1)请求获取验证码,可以获取到验证码图片,以及在cookie中返回缓存入redis的key值

2)查看redis,可以查看到之前缓存的key value

3)登录获取token时,添加验证码参数

如果验证码错误,返回验证码错误

验证码正确,且用户名密码正确,返回token


总结

以上所述是小编给大家介绍的实例详解Spring Boot实战之Redis缓存登录验证码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHPERZ网站的支持!



相关阅读 :
实例详解Spring Boot实战之Redis缓存登录验证码
实例详解Spring Boot实战之Redis缓存登录验证码
实例详解Spring Boot实战之Redis缓存登录验证码
详解Spring boot使用Redis集群替换mybatis二级缓存
亚游详解spring boot starter redis配置文件
详解spring boot starter redis配置文件
详解spring boot starter redis配置文件
亚游详解Spring-Boot集成Spring session并存入redis
详解Spring Boot使用redis实现数据缓存
redis数据结构之intset的实例详解
Spring Boot项目利用Redis实现session管理实例
Spring Boot项目利用Redis实现集中式缓存实例
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 亚游 All Rights Reserved   冀ICP备14009818号  亚游  广告服务
CUBA得分王:选秀前睡不好觉 我没有让大家失望 传腾讯将牵头对印度音乐流媒体公司投资1.15亿美元 美移民局一再突击搜查职场 加州商家工人陷入惊恐 世界排名朴廷桓积分暴跌 芈昱廷升至第七位 痛则思变!骑士下一场要变阵 冠军成员重回先发 俄统计局:至2036年俄罗斯人口可能将增至1.57亿人 朝鲜高官又来中国了 外媒猜测可能是为了这事 京东第四季度净营收1102亿元 同比增长38.7% 人和主帅:每一分都非常重要 不存在缺少经验问题 铁卫遭雪藏只为给他腾空间 一方妖锋回报主帅信任 4000万!曼联今夏豪挖热刺铁闸 pk巴萨巴黎抢人 尴尬!白宫炫耀特朗普经济有多牛 却犯下超尴尬的错
民盟中央主席:民盟对中央“三共”评价感到自豪 F1试车第7日:各队专注长跑 维特尔刷新最快圈速 国乒新面孔左手横板两面反胶 孙艺祯憧憬世界冠军 解放军战机绕飞中国台湾 美国又跳出来\"反对\"了 俄媒:美退出伊核全面协议后中国如何维护该协议 西安拟禁老旧车入三环 媒体:简单暴力 不怨你怨谁 扎克伯格被允许到国会作证 骑士旧将狂轰54分!老汉遭到10000点伤害! 俄媒曝俄前间谍女儿语音通话:和父亲将很快出院 单外援山东热身击败双外新疆 丁彦雨航砍29分 穆迪确认美国3A主权信用评级 一季度全球PC出货量6040万台 惠普第一联想第二
嘉楠耘智赴港IPO:比特币挖矿机有多挣钱? 创维发严正声明:要求拼多多停止售假 女子澳巡新南威尔士赛法澳选手领先 林希妤吉融晋级 天津女排小将起伏输经验 上海主帅坦言赢在心态 这几所高校学位授权点被“点名”整改 被暂停招生 辽宁红沿河核电二期工程进入核岛主设备安装高峰 优步收购共享单车公司Jump Bikes 大学生带家乡特产返校 室友:流着泪也要吃下去 李毅微博暗指韦世豪个性不佳:性格不改难成大器 投资小型加工厂 我出钱谁愿意为我卖命 服装批发5元到15元 养一百只土鸡利润多少 亚游