關於登入(使用者名稱,密碼,驗證碼)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js驗證使用者名稱和密碼為空程式碼JS密碼
- JavaScript驗證使用者名稱密碼是否為空JavaScript密碼
- SQL SERVER 使用者名稱、密碼登入判斷SQLServer密碼
- js 驗證使用者名稱和密碼是否為空JS密碼
- JQuery表單驗證(包括:使用者名稱,手機號,密碼,確認密碼,驗證碼60s)jQuery密碼
- git 使用者名稱密碼相關Git密碼
- SQLServer刪除登入記錄使用者名稱和密碼SQLServer密碼
- uniapp 完成兩種方式登入 驗證碼登入 密碼登入APP密碼
- win8系統如何取消使用者名稱密碼登入密碼
- 使用者名稱和密碼輸入練習密碼
- 登入驗證碼生成kaptcha(輸入驗證碼)APT
- 關於訪問資料庫的使用者名稱和密碼資料庫密碼
- 帝國CMS忘記後臺登陸使用者名稱 密碼 認證碼 安全提問答案 資料庫使用者名稱及密碼的解決方法密碼資料庫
- 更改MYSQL使用者名稱密碼MySql密碼
- Kafka怎麼配置SASL使用者名稱密碼認證Kafka密碼
- linux 關閉只允許SSH登陸(允許使用者名稱、密碼登陸)Linux密碼
- 使用代理通過使用者名稱和密碼驗證優缺點介紹密碼
- 用Servlet進行使用者名稱和密碼校驗Servlet密碼
- 線上直播原始碼,完整登陸頁面的全部資訊(包括使用者名稱、輸入密碼等)原始碼密碼
- 常見問題--oracle10g使用者名稱密碼以及登入方式Oracle密碼
- SpringBoot 整合 Shiro 密碼登入與郵件驗證碼登入(多 Realm 認證)Spring Boot密碼
- 透過使用者名稱密碼認證保障 MQTT 接入安全密碼MQQT
- 使用ajax方式驗證使用者名稱是否存在程式碼
- 隱藏域 使用者名稱密碼密碼
- tortoiseGIT儲存使用者名稱密碼Git密碼
- 從螢幕上讀入使用者名稱和密碼密碼
- 登入提示框與密碼提示框,生成驗證碼密碼
- cookie儲存使用者登入名和密碼程式碼例項Cookie密碼
- 直播app原始碼,輸入密碼和使用者名稱呼叫開發者工具APP原始碼密碼
- 通過jquery.cookie.js實現記住使用者名稱、密碼登入功能jQueryCookieJS密碼
- Redis使用認證密碼登入Redis密碼
- SSH認證免密碼登入密碼
- K8Sdashboard登入問題(chrome無法訪問以及使用使用者名稱和密碼登入)K8SChrome密碼
- Spring Security小教程 Vol 4. 使用使用者名稱和密碼驗證身份-UsernamePasswordAuthenticationFilterSpring密碼Filter
- 關於訪問伺服器需要輸入使用者名稱和密碼的解決辦法伺服器密碼
- git儲存使用者名稱與密碼Git密碼
- tomcat設定使用者名稱密碼Tomcat密碼
- ibm網站使用者名稱密碼IBM網站密碼