/** * 构建用户菜单 * * @param requestDataForm * @param usb * @return */ private String bulidMenu(RequestDataForm requestDataForm, UserSessionBean usb) { String ctxPath = String.valueOf( requestDataForm.getRequest().getSession().getServletContext().getAttribute("ctxPath")); String sql = "select a.MENU_ID,a.PARENT_MENU_ID,a.MENU_NAME,a.SEQUENCE,a.MENU_PATH,a.MENU_TYPE,b.PRIV_ID,a.URL_ID " + " from sys_menu_tab a" + " left join sys_url_tab b on a.URL_ID=b.URL_ID" + " where sys_abbr=?" + " order by PARENT_MENU_ID,SEQUENCE"; List<Map<String, Object>> list = jdbcDao.queryForList(sql, new Object[] {sysCode}); return MenuUtil.createMenu(ctxPath, list); }
/** 自动登录 */ public ResponseDataForm autoLogin(String userId, RequestDataForm requestDataForm) { ResponseDataForm rdf = new ResponseDataForm(); String loginsql = "select * from ms_user_tab where user_id=? and is_disabled=1 "; Map<String, Object> map = jdbcDao.queryForMap(loginsql, new Object[] {userId}); if (map == null || map.size() == 0) { // login faiule rdf.setResult(ResponseDataForm.FAULAIE); rdf.setResultInfo("用户不存在或密码输入有误!"); return rdf; // 登录失败,用户名或密码有误,请重新输入! } UserSessionBean usb = new UserSessionBean(); usb.setUserCode(map.get("USER_CODE").toString()); usb.setUserId(map.get("USER_ID").toString()); usb.setUserName(map.get("USER_NAME").toString()); // usb.setMobile(map.get("MOBILE").toString()); usb.setUserInfo(map); // 设置登录信息 requestDataForm .getRequest() .getSession() .setAttribute(Environment.SESSION_USER_LOGIN_INFO, usb); // 记录登录日志insert into cs_user_login_log_tab( LOGIN_IP, USER_CODE, OP_TIME,USER_ID,USER_NAME) // select ?,?,now(),?,? String logSql = "insert into cs_user_login_log_tab( LOGIN_IP, USER_CODE, OP_TIME,USER_ID,USER_NAME) select ?,?,now(),?,?"; jdbcDao.execute( logSql, new Object[] { requestDataForm.getRequest().getRemoteAddr(), map.get("USER_CODE").toString(), userId, map.get("USER_NAME").toString() }); requestDataForm .getRequest() .getSession() .setAttribute("session_user_menu", bulidMenu(requestDataForm, usb)); rdf.setResult(ResponseDataForm.SESSFUL); return rdf; }
@Override @Transactional public ResponseDataForm service(RequestDataForm requestDataForm) throws Exception { String usercode = requestDataForm.getRequest().getParameter("usercode"); String passwd = requestDataForm.getRequest().getParameter("passwd"); ResponseDataForm rdf = new ResponseDataForm(); String loginsql = "select * from ms_user_tab a where lower(a.USER_CODE)=lower(?) and a.USER_PWD=MD5(?) and a.is_disabled='N' "; Map<String, Object> map = jdbcDao.queryForMap(loginsql, new Object[] {usercode, passwd}); if (map == null || map.size() == 0) { // login faiule rdf.setResult(ResponseDataForm.FAULAIE); // 登录失败,用户名或密码有误,请重新输入! rdf.setResultInfo("用户不存在或密码输入有误!"); rdf.setPage("login"); } else { UserSessionBean usb = new UserSessionBean(); usb.setUserCode(map.get("USER_CODE").toString()); usb.setUserId(map.get("USER_ID").toString()); usb.setUserName(map.get("USER_NAME").toString()); // usb.setMobile(map.get("MOBILE").toString()); usb.setUserInfo(map); // 设置登录信息 requestDataForm .getRequest() .getSession() .setAttribute(Environment.SESSION_USER_LOGIN_INFO, usb); // 设置用户菜单 requestDataForm .getRequest() .getSession() .setAttribute("session_user_menu", bulidMenu(requestDataForm, usb)); rdf.setResult(ResponseDataForm.SESSFUL); String logSql = "insert into cs_user_login_log_tab( LOGIN_IP, USER_CODE, OP_TIME,USER_ID,USER_NAME) select ?,?,now(),?,?"; jdbcDao.execute( logSql, new Object[] { Util.getIP(requestDataForm.getRequest()), usercode, map.get("USER_ID").toString(), map.get("USER_NAME").toString() }); String uptSql = "update ms_user_tab set LAST_LOGIN_TIME = now() where user_code=? and user_pwd=MD5(?)"; jdbcDao.execute(uptSql, new Object[] {usercode, passwd}); if (requestDataForm.getRequest().getParameter("autologin") != null) { // 自动登录实现 String userCode64 = Base64.encodeBase64String(usb.getUserId().getBytes("UTF-8")); userCode64 = userCode64.replace("\r\n", ""); userCode64 = userCode64.replace("\n", ""); String userEncoder = java.net.URLEncoder.encode(userCode64, Environment.ENCODING); Cookie usercookie = new Cookie("weiming-gswl-usercode", userEncoder); String passwd64 = Base64.encodeBase64String(passwd.getBytes("UTF-8")); passwd64 = passwd64.replace("\r\n", ""); passwd64 = passwd64.replace("\n", ""); String pwdEncoder = java.net.URLEncoder.encode(passwd64, Environment.ENCODING); Cookie passwdcookie = new Cookie("weiming-gswl-passwd", pwdEncoder); usercookie.setPath("/"); passwdcookie.setPath("/"); usercookie.setMaxAge(60 * 60 * 24 * 360); // 一年以内 passwdcookie.setMaxAge(60 * 60 * 24 * 360); // 一年以内 requestDataForm.getResponse().addCookie(usercookie); requestDataForm.getResponse().addCookie(passwdcookie); } } return rdf; }