關於登入(使用者名稱,密碼,驗證碼)
html
關於登入(使用者名稱,密碼,驗證碼)
ajax
關於登入(使用者名稱,密碼,驗證碼)
關於登入(使用者名稱,密碼,驗證碼)
Controller
關於登入(使用者名稱,密碼,驗證碼)
關於登入(使用者名稱,密碼,驗證碼)
UserServiceImpl
關於登入(使用者名稱,密碼,驗證碼)
驗證碼Controller
關於登入(使用者名稱,密碼,驗證碼)
YzmServiceImpl
關於登入(使用者名稱,密碼,驗證碼)
宣告Constant類
關於登入(使用者名稱,密碼,驗證碼)
驗證碼util類
package com.xinbo.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class RandomValidateCodeUtil {
public static final String RANDOMCODEKEY = "randomcode_key";//放到session中的key
private Random random = new Random();
private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//隨機產生的字串
private int width = 85;//圖片寬
private int height = 36;//圖片高
private int lineSize = 40;//干擾線數量
private int stringNum = 4;//隨機產生字元數量
private static final Logger logger = LoggerFactory.getLogger(RandomValidateCodeUtil.class);
public Map<String,String> getRandcode() {
// BufferedImage類是具有緩衝區的Image類,Image類是用於描述影像資訊的類
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
Graphics g = image.getGraphics();// 產生Image物件的Graphics物件,改物件可以在影像上進行各種繪製操作
g.fillRect(0, 0, width, height);//圖片大小
g.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 18));//字型大小
g.setColor(getRandColor(110, 133));//字型顏色
// 繪製干擾線
for (int i = 0; i <= lineSize; i++) {
drowLine(g);
}
// 繪製隨機字元
String randomString = "";
for (int i = 1; i <= stringNum; i++) {
randomString = drowString(g, randomString, i);
}
logger.info(randomString);
//將生成的隨機字串儲存到session中
//session.removeAttribute(RANDOMCODEKEY);
//session.setAttribute(RANDOMCODEKEY, randomString);
g.dispose();
String base64 = null;
try {
// 將記憶體中的圖片透過流動形式輸出到客戶端
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "JPEG", baos);//圖片格式
byte[] bytes = baos.toByteArray();
base64 = new BASE64Encoder().encodeBuffer(bytes).trim();
} catch (Exception e) {
logger.error("將記憶體中的圖片透過流動形式輸出到客戶端失敗>>>> ", e);
}
Map<String,String> map = new HashMap<String,String>();
map.put("num", randomString);
map.put("pic", base64);
return map;
}
private Font getFont(){
return new Font("Fixedsys",Font.CENTER_BASELINE,18);
}
private Color getRandColor(int fc,int bc){
if(fc > 255)
fc = 255;
if(bc > 255)
bc = 255;
int r = fc + random.nextInt(bc-fc-16);
int g = fc + random.nextInt(bc-fc-14);
int b = fc + random.nextInt(bc-fc-18);
return new Color(r,g,b);
}
private String drowString(Graphics g,String randomString,int i){
g.setFont(getFont());
g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));
String rand = String.valueOf(getRandomString(random.nextInt(randString.length())));
randomString +=rand;
g.translate(random.nextInt(3), random.nextInt(3));
g.drawString(rand, 13*i, 16);
return randomString;
}
private void drowLine(Graphics g){
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(13);
int yl = random.nextInt(15);
g.drawLine(x, y, x+xl, y+yl);
}
public String getRandomString(int num){
return String.valueOf(randString.charAt(num));
}
}
©著作權歸作者所有:來自51CTO部落格作者1ceMan7的原創作品,如需轉載,請註明出處,否則將追究法律責任
j
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2819470/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JQuery表單驗證(包括:使用者名稱,手機號,密碼,確認密碼,驗證碼60s)jQuery密碼
- git 使用者名稱密碼相關Git密碼
- SQLServer刪除登入記錄使用者名稱和密碼SQLServer密碼
- uniapp 完成兩種方式登入 驗證碼登入 密碼登入APP密碼
- 使用者名稱和密碼輸入練習密碼
- SpringBoot 整合 Shiro 密碼登入與郵件驗證碼登入(多 Realm 認證)Spring Boot密碼
- 帝國CMS忘記後臺登陸使用者名稱 密碼 認證碼 安全提問答案 資料庫使用者名稱及密碼的解決方法密碼資料庫
- 登入驗證碼生成kaptcha(輸入驗證碼)APT
- Kafka怎麼配置SASL使用者名稱密碼認證Kafka密碼
- 用Servlet進行使用者名稱和密碼校驗Servlet密碼
- 使用代理通過使用者名稱和密碼驗證優缺點介紹密碼
- 透過使用者名稱密碼認證保障 MQTT 接入安全密碼MQQT
- Spring Security小教程 Vol 4. 使用使用者名稱和密碼驗證身份-UsernamePasswordAuthenticationFilterSpring密碼Filter
- 通過jquery.cookie.js實現記住使用者名稱、密碼登入功能jQueryCookieJS密碼
- K8Sdashboard登入問題(chrome無法訪問以及使用使用者名稱和密碼登入)K8SChrome密碼
- Redis使用認證密碼登入Redis密碼
- 線上直播原始碼,完整登陸頁面的全部資訊(包括使用者名稱、輸入密碼等)原始碼密碼
- 公司網站使用者名稱密碼修改?網站密碼
- 【PB案例學習筆記】-03使用者名稱密碼校驗筆記密碼
- Java 程式碼本地設定Hadoop使用者名稱密碼JavaHadoop密碼
- 根據教程中,輸錯密碼或使用者名稱後,卻不能返回‘使用者名稱或密碼錯誤’密碼
- 直播app原始碼,輸入密碼和使用者名稱呼叫開發者工具APP原始碼密碼
- Dockerfile 中RUN互動需要輸入 使用者名稱和密碼Docker密碼
- Python暴力破解網站登入密碼(帶token驗證)Python網站密碼
- Flutter 密碼輸入框 驗證碼輸入框Flutter密碼
- Sql Server關於許可權、角色以及登入名、使用者名稱的總結SQLServer
- Exadata修改sshd密碼驗證方式 延遲10分鐘關閉 明明密碼對了卻登入不上密碼
- 織夢使用者名稱密碼?織夢提示你的密碼錯誤密碼
- PbootCMS後臺關閉驗證碼,登入提示驗證碼不能空的解決方法boot
- 密碼登入密碼
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- 為何Oracle Database 12R2輸入正確的使用者名稱密碼口令驗證依然不能透過?OracleDatabase密碼
- 模擬使用者登入,內含驗證碼驗證和request等操作
- 織夢dedecms無法登入後臺,提示使用者名稱或密碼錯誤怎麼辦密碼
- Git中git pull/push 老是重複輸入使用者名稱密碼Git密碼
- 根據使用者名稱和密碼查詢使用者密碼
- 04 . Go+Vue開發一個線上外賣應用(使用者名稱密碼和圖形驗證碼)GoVue密碼
- jQuery記住使用者名稱和密碼效果程式碼例項jQuery密碼