passport.java
来自「cwbbs 云网论坛源码」· Java 代码 · 共 271 行
JAVA
271 行
package cn.js.fan.sso;import javax.servlet.http.*;import cn.js.fan.db.Conn;import java.sql.*;import cn.js.fan.util.*;import java.util.*;import java.io.PrintWriter;import java.io.IOException;import java.io.PrintStream;import cn.js.fan.security.SecurityUtil;import org.apache.axis.client.Service;import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;import org.apache.axis.encoding.XMLType;import org.apache.log4j.Logger;public class PassPort { Logger logger; CookieBean cookiebean; String prefix = "tt"; String ssoinfo = ""; String doorurl = ""; Config config = null; Encrypt encrypt = null; public PassPort() { logger = Logger.getLogger(PassPort.class.getName()); encrypt = new Encrypt(); config = new Config(); doorurl = config.getDoorUrl(); } public void Login(HttpServletRequest request, HttpServletResponse res) { String nick, pwd, redirect, kind, pwdmd5 = ""; nick = StrUtil.UnicodeToUTF8(StrUtil.getNullString(request.getParameter( "nick"))); pwd = StrUtil.getNullString(request.getParameter("pwd")); try { pwdmd5 = SecurityUtil.MD5(pwd); } catch (Exception e) { logger.error(e.getMessage()); } redirect = StrUtil.getNullString(request.getParameter("redirect")); kind = StrUtil.getNullString(request.getParameter("kind")); String webapploginurl = config.getLoginURL(kind); webapploginurl += "&ssoinfo=" + encrypt.encodeinfo(nick, pwdmd5, redirect); Enumeration paramNames = request.getParameterNames(); String info = ""; while (paramNames.hasMoreElements()) { String paramName = (String) paramNames.nextElement(); if (paramName.equals("nick") || paramName.equals("pwd") || paramName.equals("redirect") || paramName.equals("kind")) continue; String[] paramValues = request.getParameterValues(paramName); if (paramValues.length == 1) { String paramValue = StrUtil.UnicodeToUTF8(paramValues[0]); if (paramValue.length() == 0) info += "&" + paramName + "="; else info += "&" + paramName + "=" + paramValue; } else { for (int i = 0; i < paramValues.length; i++) { info += "&" + paramName + "=" + StrUtil.UnicodeToUTF8(paramValues[i]); } } } webapploginurl += info; boolean isvalid = AuthUser(nick, pwdmd5); if (isvalid) { cookiebean.addCookie(res, addPrefix("nick"), nick, "/"); cookiebean.addCookie(res, addPrefix("pwd"), pwdmd5, "/"); logger.info("PassPort:Login " + nick + "验证通过!"); } else { try { res.sendRedirect(doorurl + "?kind=" + kind); } catch (Exception e) {} return ; } try { res.sendRedirect(webapploginurl); } catch (Exception e) { logger.error(e.getMessage()); } } public void Jump(HttpServletRequest request, HttpServletResponse res) { String kind = StrUtil.getNullString(request.getParameter("kind")); String defaulturl = config.getDefaultURL(kind); String webapploginurl = config.getLoginURL(kind); if (hasLogin(request)) { String nick = StrUtil.getNullStr(cookiebean.getCookieValue(request, addPrefix("nick"))); String pwdMD5 = StrUtil.getNullStr(cookiebean.getCookieValue( request, addPrefix("pwd"))); String ssoinfo = encrypt.encodeinfo(nick, pwdMD5, defaulturl); webapploginurl += "&ssoinfo=" + ssoinfo; try { res.sendRedirect(webapploginurl); } catch (Exception e) { logger.error(e.getMessage()); } return ; } try { res.sendRedirect(defaulturl); } catch (Exception e) { } } public void Logout() { } public String addPrefix(String s) { s = prefix + "." + s; return s; } public boolean hasLogin(HttpServletRequest request) { CookieBean cookiebean = new CookieBean(); String s = StrUtil.getNullStr(cookiebean.getCookieValue(request, addPrefix("nick"))); if (s.equals("")) return false; return true; } public boolean Regist(String nick, String pwd) throws IOException { Boolean re = new Boolean(false); try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( "http://localhost:8080/axis/services/SSOService"); call.setOperationName("RegistUser"); call.addParameter("nick", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("pwd", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.XSD_BOOLEAN); re = (Boolean) call.invoke(new Object[] {nick, pwd}); } catch (Exception e) { logger.error(e.getMessage()); } return re.booleanValue(); } public boolean ModifyPwd(String nick, String newpwdMD5) throws IOException { Boolean re = new Boolean(false); try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( "http://localhost:8080/axis/services/SSOService"); call.setOperationName("ModifyPwd"); call.addParameter("nick", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("newpwdMD5", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.XSD_BOOLEAN); re = (Boolean) call.invoke(new Object[] {nick, newpwdMD5}); } catch (Exception e) { logger.error(e.getMessage()); } return re.booleanValue(); } public boolean AuthUser(String nick, String pwdMD5) { Boolean re = new Boolean(false); try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( "http://localhost:8080/axis/services/SSOService"); call.setOperationName("AuthUser"); call.addParameter("nick", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("pwdMD5", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.XSD_BOOLEAN); re = (Boolean) call.invoke(new Object[] {nick, pwdMD5}); } catch (Exception e) { logger.error(e.getMessage()); } return re.booleanValue(); } public void AppAuthUser(HttpServletRequest request, HttpServletResponse response) throws IOException { String nick = StrUtil.UnicodeToUTF8(StrUtil.getNullString(request. getParameter("nick"))); String pwdMD5 = StrUtil.getNullString(request.getParameter("pwdMD5")); boolean re = AuthUser(nick, pwdMD5); try { response.setDateHeader("Expires", System.currentTimeMillis()); PrintStream pout = new PrintStream(response.getOutputStream(), true, "utf-8"); if (re) pout.print("+OK 验证成功! \r\n"); else pout.print("-OK 验证失败! \r\n"); pout.flush(); pout.close(); } catch (IOException e) { logger.error("AppAuthUser:" + e.getMessage()); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?