@Action("wxlogin") public String execute() { if (CommonUtil.isEmpty(getSession().get("openid"))) { Config conf = Config.getInstance(); try { byte[] bs = new byte[16]; new Random().nextBytes(bs); String st = EncodeHelper.bytes2hex(bs); // 放进一个使用EhCache维护的容器,当用户从微信的OAuth2.0拿到code后检查这个链接是不是由此链接生成的。 // CacheManager.getInstance().getCache("WXStates") // .put(new Element(st, redir)); getSession().put("wxstate", st); getSession().put("redir", redir); redir = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + conf.get("weixin.appid") + "&redirect_uri=" + EncodeHelper.encode(conf.get("weixin.context") + "wxlogindo.act", "URL") + "&response_type=code&scope=snsapi_base&state=" + st + "#wechat_redirect"; } catch (Exception e) { log.error(e); } } try { org.apache.struts2.ServletActionContext.getResponse().sendRedirect(redir); } catch (IOException e) { log.error(e); } return NONE; }
private boolean checkmsgsum(Object data, String touser, String userenc, String checksum) { String sdata = JSON.serialize(data); sdata = sdata.replaceAll("[ \\n\\r\\t]", ""); log.info(sdata); if (CommonUtil.eq(checksum, EncodeHelper.digest(sdata + touser + userenc, "SHA"))) return true; else return false; }
private boolean checkenc(DB db, long stamp, String clientid, String userenc) { DBObject clientinfo = getClientInfo(db, clientid); if (clientinfo == null) return false; String enckey = String.valueOf(clientinfo.get("enckey")); try { String userdec = new String( EncodeHelper.dencrypt( "DESede", EncodeHelper.hex2bytes(userenc), EncodeHelper.hex2bytes(enckey), null)); if (CommonUtil.eq(userdec, String.valueOf(clientinfo.get("password")) + stamp)) return true; else return false; } catch (GeneralSecurityException e) { log.error(e); errormsg = e.getMessage(); return false; } }