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 + -
显示快捷键?