1. 當業務量不大時,且時間小於session存活時間時,使用session來進行存儲
- session存活時間 : 在tomcat中默認為30分鍾,可以根據需要進行修改
2. 當業務量達到一定程度后,不建議使用session,效率會降低,建議使用redis等緩存技術來存儲
- redis存儲時,手機號作為key,驗證碼和超時時間作為值.前台設置60秒按鈕才能重新點擊
- 登錄后台接收到前台的手機號時,從redis中get驗證碼,如果為空,給出提示重新獲取
- 如果不為空,判斷前台傳遞來的驗證碼與redis中的是否一致
- 之后做出登錄邏輯
- 使用完的驗證碼要刪除掉,避免重復使用
- 如果第一個用戶沒收到,60秒后重新發送驗證時,更新redis中的驗證碼
備注 :
1. 可以用手機號碼做key,設置過期時間,發短信前先get一下,n秒內能get到值就不允許重復發送 ?
如果這樣寫,但純存一個key值肯定后者要覆蓋前者,你可以用隨機生成的驗證碼加上token或者id存入redis,但是這樣還會有個問題,一旦並發量大,那么redis也是很難去找,浪費效率,所以在生產的時候,你可以加冒號,在redis中自動生成指定的文件夾
2. java 將驗證碼存放在session是否安全,會不會被截取?
JSP和servlet都運行在服務端,是不用擔心被熊孩子截取的
3.手機驗證碼計費問題?
這是另外一個問題,且待下回詳解......
3. 不建議使用關系型數據庫,畢竟從硬盤讀寫數據速度要遠低於內存的讀寫速度.