麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > CMS > Phpwind > 正文

jsp網(wǎng)站到phpwind論壇的同步登陸登出實(shí)現(xiàn)

2024-08-30 19:06:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

這幾天研究了下基于java+jsp開(kāi)發(fā)的網(wǎng)站同phpwind論壇的同步登陸問(wèn)題。主要就是要做到cookie的一致。

phpwind的cookie的生成方式較為復(fù)雜,而且查閱了網(wǎng)上很多資料,參照了phpwind包login.php里的過(guò)程,只是php語(yǔ)言的,對(duì)我這樣不熟悉php的人來(lái)說(shuō)還是有點(diǎn)麻煩的。于是我用java代碼實(shí)現(xiàn)生成了phpwind可以識(shí)別的cookie,做到了同步登陸。

具體步驟如下:

生成的cookie的name和value都要與phpwind的一致。

首先看cookie的name生成規(guī)則:先查找phpwind數(shù)據(jù)庫(kù)表pw_config的name為db_sitehash字段的值(這里用PwConfig.db_sitehash表示),經(jīng)過(guò)MD5方式加密后,取前5位與字符串"_winduser"拼接而成。

java代碼如下:

  1. private String generateCookieName() {  
  2.        StringBuilder cookieNameString = new StringBuilder(md5.hash(  
  3.        PwConfig.db_sitehash).substring(05)).append("_winduser");  
  4.        return cookieNameString .toString();  
  5.  } 

再看cookie的value生成規(guī)則,有點(diǎn)復(fù)雜,需要細(xì)心和一點(diǎn)耐心。需要獲取

  1. private String generateCookieValue(User user, HttpServletRequest request,  
  2.    HttpServletResponse response) {  
  3. //獲取系統(tǒng)瀏覽器信息,后面用到  
  4.   String user_Agent = request.getHeader("user-agent");  
  5.   Integer pwMember_Uid = null;  
  6.  //獲取jsp網(wǎng)站登錄用戶在論壇用戶表中的uid,當(dāng)然要同步登錄,jsp網(wǎng)站和論壇的數(shù)據(jù)庫(kù)用戶數(shù)據(jù)表數(shù)據(jù)肯定要一致啦  
  7.    pwMember_Uid = pwMembersDao.getuIdByUsername(user.getName());  
  8.    
  9. //為了效率,字符串拼接操作都采用StringBuilder類型  
  10.   StringBuilder cookieBaseStringBuilder = new StringBuilder();  
  11.   if (pwMember_Uid != null) {  
  12. //這里的md5.hash()函數(shù)作用是對(duì)字符串進(jìn)行MD5方式加密,返回32位結(jié)果字符串;user是jsp網(wǎng)站登錄的用戶對(duì)象,里面的密碼就是明文,PwConfig.db_hash是論壇pw_config表中db_hash的值  
  13. cookieBaseStringBuilder  
  14.      .append(pwMember_Uid.toString())  
  15.      .append("/t")  
  16.      .append(md5.hash(new StringBuilder(user_Agent)        
  17.        .append(md5.hash(user.getPassword()))  
  18.        .append(PwConfig.db_hash).toString()))  
  19.      .append("/t").append("");  
  20.   } else {  
  21.    return "";  
  22.   }  
  23.   String cookieBaseKey = md5.hash(  
  24.     new StringBuilder(user_Agent).append(PwConfig.db_hash)  
  25.       .toString()).substring(8, 26);  
  26.   String cookieBaseString = cookieBaseStringBuilder.toString();  
  27.   int keylen = cookieBaseKey.length();  
  28.   int strlen = cookieBaseString.length();  
  29.   StringBuilder cookieValueStringBuilder = new StringBuilder();  
  30.   for (int i = 0; i < strlen; i++) {  
  31.    int k = i % keylen;  
  32. //對(duì)前面生成的cookieBaseString和cookieBaseKey字符串中指定位字符進(jìn)行按位異或  
  33.    cookieValueStringBuilder  
  34.      .append((char) (cookieBaseString  
  35.        .toCharArray()[i] ^ cookieBaseKey.toCharArray()[k]));  
  36.   }  
  37.   String cookieValue = cookieValueStringBuilder.toString();  
  38.   try {  
  39. //在進(jìn)行一次Base64編碼  
  40. cookieValue = new String(Base64.encodeToByte(cookieValue  
  41.      .getBytes("UTF-8")));  
  42.   } catch (UnsupportedEncodingException e) {  
  43.    e.printStackTrace();  
  44.   }  
  45. //去掉base64編碼后末尾可能出現(xiàn)的等號(hào),好像不去也行,好像phpwind識(shí)別時(shí)也會(huì)自動(dòng)去掉  
  46.   cookieValue = cookieValue.replace("=""");  
  47.   return cookieValue;  
  48.  } 

 至此,cookie的name和value都已經(jīng)生成,只需要放到cookie中就行了。

  1. public void addCookie(User user, HttpServletRequest request,  
  2.    HttpServletResponse response) {  
  3.   String name = generateCookieName();  
  4.   String value = generateCookieValue(user, request, response);  
  5.   Cookie cookie = new Cookie(name , value);  
  6.   cookie.setMaxAge(60 * 30);  
  7.   cookie.setPath("/");  
  8.   response.addCookie(cookie);  
  9.  } 

同步登出也很容易,只要將指定name值的cookie的value設(shè)置為空就行了

  1. public void clearCookie(HttpServletResponse response) {  
  2.   Cookie cookie = new Cookie(getCookieName(), null);  
  3.   cookie.setMaxAge(0);  
  4.   cookie.setPath("/");  
  5.   response.addCookie(cookie);  
  6.  } 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 中国嫩模一级毛片 | 黄色片视频免费观看 | 三级国产三级在线 | 欧美女同hd| 色中色在线播放 | 亚洲日韩中文字幕一区 | 少妇一级淫片免费放正片 | 精品乱码久久久久 | 国产成人在线综合 | h视频免费看 | 亚洲骚图 | av免费在线观看不卡 | 成人毛片免费在线 | 日韩中文字幕一区二区三区 | 中文字幕综合在线观看 | 欧美视频在线观看一区 | 亚洲国产成人久久成人52 | 天天看天天摸天天操 | 一级做a爰片性色毛片2021 | 国产1区2区在线观看 | 成人在线视频一区 | 国产成人自拍视频在线观看 | 免费男女视频 | 国产精品一区二区三区在线 | 超碰97最新 | 91精品国产91 | 欧美日韩亚洲成人 | 国产午夜精品理论片a级探花 | 日本在线一区二区 | 国产日韩一区二区三区在线观看 | 91精品最新国内在线播放 | 狠狠干精品视频 | av中文字幕免费在线观看 | 午夜小电影 | 91美女视频在线观看 | 在线播放免费人成毛片乱码 | 综合精品一区 | 欧美在线中文字幕 | 狠狠干伊人网 | 亚洲欧美不卡视频 | 国产精品视频在线观看免费 |