ac453c63dd1d7ba5d9cbc1992ae5556880a5ecf8.svn-base 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package com.customer.controller;
  2. import java.io.IOException;
  3. import java.net.URLDecoder;
  4. import java.util.Base64;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import com.kingdee.bos.ctrl.swing.StringUtils;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import com.alibaba.fastjson.JSON;
  15. /**
  16. * 此Servlet用于流程助手调用,解析流程助手的token,返回eas的用户信息
  17. */
  18. //api请求路径
  19. public class TokenAuthServlet extends HttpServlet {
  20. private static final long serialVersionUID = 1L;
  21. private final Logger logger = LoggerFactory.getLogger(TokenAuthServlet.class);
  22. public TokenAuthServlet() {
  23. super();
  24. }
  25. /**
  26. * token的处理逻辑,请根据第三方app的实际业务需求实现
  27. */
  28. @Override
  29. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  30. logger.info("into.TokenAuthServlet.doGet");
  31. String token = request.getParameter("token");
  32. logger.info("into.TokenAuthServlet.doGet.token:"+token);
  33. String appid = request.getParameter("appid");
  34. logger.info("into.TokenAuthServlet.doGet.appid:"+appid);
  35. String secret = request.getParameter("secret");
  36. logger.info("into.TokenAuthServlet.doGet.secret:"+secret);
  37. Map<String, String> result = null;
  38. try {
  39. result = getLoginInfoByToken(token, appid, secret);
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. logger.error("getLoginInfoByToken异常:"+e.getMessage());
  43. throw new ServletException();
  44. }
  45. response.setCharacterEncoding("utf-8");
  46. response.setContentType("application/json; charset=utf-8");
  47. response.getWriter().write(JSON.toJSONString(result));
  48. }
  49. @Override
  50. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  51. doGet(request, response);
  52. }
  53. /**
  54. * tokenurl
  55. * 根据token解析出要登陆eas的用户信息
  56. * http://localhost:8080/otherapp/token?token=emhhbnNhbg==
  57. */
  58. public Map<String, String> getLoginInfoByToken(String token, String appid, String secret) throws Exception {
  59. HashMap<String, String> resultMap = new HashMap<String, String>();
  60. logger.info("getLoginInfoByToken.token="+token);
  61. String userNumber = "";
  62. try {
  63. //Base64解密
  64. userNumber = decrypt_Base64(token);
  65. } catch (Exception e) {
  66. logger.error("encryptUserInfo encrypt_Base64 Exception:"+e.getMessage());
  67. e.printStackTrace();
  68. throw new Exception("AD域解密失败:"+ e.getMessage());
  69. }
  70. logger.info("getLoginInfoByToken.userNumber="+userNumber);
  71. //.........根据流程助手传来的token参数,获取eas用户信息逻辑
  72. resultMap.put("status", "0");
  73. resultMap.put("message", userNumber);
  74. return resultMap;
  75. }
  76. /***
  77. * Base64解密
  78. * @param str 需要解密的参数
  79. * @return
  80. * @throws Exception
  81. */
  82. private String decrypt_Base64(String str) throws Exception {
  83. logger.info("decrypt_Base64.str="+str);
  84. if(StringUtils.isEmpty(str)){
  85. return "";
  86. }
  87. String sDecode = URLDecoder.decode(str,"UTF-8");
  88. logger.info("decrypt_Base64.sDecode="+sDecode);
  89. byte[] asBytes = Base64.getDecoder().decode(sDecode);
  90. String result = new String(asBytes,"UTF-8");
  91. return result;
  92. }
  93. /**
  94. * 登录获取设备类型
  95. * @param requestHeader
  96. * @return
  97. */
  98. private int getDeviceType(String requestHeader){
  99. if (requestHeader.indexOf("Android") != -1) {
  100. //安卓
  101. return 1;
  102. } else if ((requestHeader.indexOf("iPhone") != -1) || (requestHeader.indexOf("iPad") != -1)) {
  103. //苹果
  104. return 2;
  105. } else {
  106. //电脑
  107. return 3;
  108. }
  109. }
  110. public final void getKK(String requestHeader){
  111. int type = getDeviceType(requestHeader);
  112. if(type == 1 ||type == 2) {
  113. }
  114. }
  115. }