現在很多應用都用到短信驗證。這篇博客主要記錄下短信驗證碼存入redis,實現用戶登錄,算是個人筆記!
短信驗證 就不多說了,我用的阿里的短信,官網上有短信驗證,很詳細,模板可以直接下載,簡單修改就可以使用了!
首先是在服務器上安裝redis,服務器設置redis端口號,然後使用圖形化連接服務器上的redis(你也可以直接操作服務器)
這裏連接肯可能出現連接不上、連接錯誤等問題,百度一下 很多博客都會說到,就是防火牆設置和修改配置文件redis-conf
你也可以試試以下操作(以下摘自其他博客)
1、先檢查防火牆的狀態
通過systemctl status firewalld查看firewalld狀態,發現當前是dead狀態,即防火牆未開啓
通過systemctl start firewalld開啓防火牆,沒有任何提示即開啓成功。
【再次通過systemctl status firewalld查看firewalld狀態,顯示running即已開啓了。
如果要關閉防火牆設置,可能通過systemctl stop firewalld這條指令來關閉該功能。】
2、開放6379端口
命令:firewall-cmd --permanent --add-port=6379/tcp
執行可以成功,返回success
用該命令查詢firewall-cmd --permanent --query-port=6379/tcp
3、開放端口的配置要添加在:vi /etc/sysconfig/iptables-config 文末就可以了;
添加的內容:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
4、ip的配置問題
5、關閉防火牆
如何連接成功,那恭喜你啦,如果還是不行的話,度娘 嘿嘿(總會有答案的)
接下來就是Java操作redis了,Redis開發商提供了一個Java版本支持 Jedis類,它可以獲得java和redis的連接。
1、導入依賴 --如果你是maven項目
在依賴中加入以下依賴(這裏是2.8.0版本)
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
2、如果不是maven項目,則就要去下載jar包了,我這裏附上下載鏈接吧
http://central.maven.org/maven2/redis/clients/jedis/2.8.0/
這裏jedis還需要一個依賴包,commons-pool2,不然jedis裏面的config不能用的哦(坑已踩過)
下面Jedis代碼
properties文件:
static JedisPool jedisPool ;
static Jedis jedis= null;
static {
//轉換爲流的方式
InputStream inputStream = JedisPoolUtil.class.getClassLoader().getResourceAsStream("redisDB.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);//加載流文件
} catch (IOException e) {
e.printStackTrace();
System.out.println("讀取配置文件失敗");
}
String host = properties.getProperty("redis.host");
Integer port = Integer.parseInt(properties.getProperty("redis.port"));
Integer MaxTotal = Integer.parseInt(properties.getProperty("redis.MaxTotal"));
Integer MaxIdle = Integer.parseInt(properties.getProperty("redis.MaxIdle"));
Integer MinIdle = Integer.parseInt(properties.getProperty("redis.MinIdle"));
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(10);
jedisPoolConfig.setMaxIdle(MaxIdle);
jedisPoolConfig.setMinIdle(MinIdle);
jedisPool = new JedisPool(jedisPoolConfig,host,port);
}
public static Jedis getJedis(){
jedis = jedisPool.getResource();
jedis.auth("root");
return jedis;
}
public static void release(Jedis jedis){
if (jedis != null){
jedis.close();
}
}
發送驗證碼,將驗證碼存入redis,並設置有效時間(這裏設置爲五分鐘)
smsResponse = SMSCodeUtils.sendSms(phoneNum, smsCode);
json2.setCode(200);
json2.setMsg("驗證碼已發送");
// 登錄的驗證碼存入redis
jedis.set(phoneNum+"login", smsCode);
// 設置key的有效期五分鐘
// NX是不存在時才set, XX是存在時才set, EX是秒,PX是毫秒
jedis.set(phoneNum+"login",smsCode,"XX","EX",300);
上面兩個set可以合爲一條,XX改爲NX。就可以了,親測可行!
第一次搞,簡單的配置一下,歡迎大佬留言