LoginCallback.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package platform.modules.oauth;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.xiaoleilu.hutool.crypto.SecureUtil;
  5. import org.apache.http.HttpResponse;
  6. import org.apache.http.client.ClientProtocolException;
  7. import org.apache.http.client.HttpClient;
  8. import org.apache.http.client.methods.HttpGet;
  9. import org.apache.http.impl.client.DefaultHttpClient;
  10. import org.apache.http.util.EntityUtils;
  11. import org.apache.shiro.SecurityUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.beans.factory.annotation.Value;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.PostMapping;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import platform.common.Constant;
  18. import platform.common.base.controller.BaseController;
  19. import platform.common.util.CookieUtil;
  20. import platform.common.util.LoadPropertyUtil;
  21. import platform.common.util.ShiroUtils;
  22. import platform.modules.government.dao.UserDao;
  23. import platform.modules.government.entity.User;
  24. import platform.modules.government.service.UserService;
  25. import platform.modules.sys.shiro.UsernamePasswordToken;
  26. import javax.servlet.http.HttpServletResponse;
  27. import java.io.IOException;
  28. /**
  29. * Created by luohaifeng on 2018/3/8.
  30. */
  31. @Controller
  32. @RequestMapping(value = "/loginCallback")
  33. public class LoginCallback extends BaseController {
  34. @Value("${resetPassword}")
  35. private String resetPassword;
  36. @Autowired
  37. private UserDao userDao;
  38. @Autowired
  39. private UserService userService;
  40. @Autowired
  41. private HttpServletResponse response;
  42. @PostMapping(value = "")
  43. public String validateLogin(String SAMLResponse) {
  44. log.info("! SAMLResponse = {}", SAMLResponse);
  45. System.out.println("===============");
  46. User user = ShiroUtils.getCurrentUser();
  47. User existUser = userDao.findByNickName(user.getNick_name(), Constant.UserType.GOVERNMENT);
  48. if (null == existUser) {
  49. user.setUser_type(Constant.UserType.GOVERNMENT);
  50. user.setPassword(SecureUtil.md5().digestHex(resetPassword));
  51. userService.saveSelectiveSso(user);
  52. }
  53. UsernamePasswordToken token = new UsernamePasswordToken();
  54. token.setUsername(user.getNick_name());
  55. //token.setPassword(resetPassword.toCharArray());
  56. token.setSSO(true);
  57. SecurityUtils.getSubject().login(token);
  58. // 注入token到cookie
  59. String tokenString = userService.createToken();
  60. tokenString = tokenString.replace("Bearer ", "");
  61. log.info("tokenstring: {}", tokenString);
  62. CookieUtil.createWebCookie(response, "token", tokenString, 7200);
  63. // CookieUtil.createWebCookie(response, "user_id", user.getId().toString(), 7200);
  64. return "redirect:/admin/home";
  65. }
  66. public String createUser(String ssoId) {
  67. //创建一个http客户端
  68. HttpClient client = new DefaultHttpClient(); //创建一个POST请求
  69. String uri = LoadPropertyUtil.getReplacedProperty(" userInfo.url", ssoId);
  70. HttpGet httpGet = new HttpGet(uri);
  71. try {
  72. //设置http Post请求参数
  73. HttpResponse sererResponse = client.execute(httpGet);
  74. if (sererResponse.getStatusLine().getStatusCode() == 200) {//如果状 态码为200,表示请求成功
  75. String result = EntityUtils.toString(sererResponse.getEntity());
  76. System.out.println(result);
  77. JSONObject jsonObject = JSON.parseObject(result);
  78. User user = userDao.findByNickName((String) jsonObject.get("userId"), Constant.UserType.GOVERNMENT);
  79. if (null == user) {
  80. user = new User();
  81. user.setUser_type(Constant.UserType.GOVERNMENT);
  82. user.setNick_name((String) jsonObject.get("userId"));
  83. user.setUser_name((String) jsonObject.get("name"));
  84. user.setEmail((String) jsonObject.get("email"));
  85. user.setPhone((String) jsonObject.get("mobile"));
  86. user.setPassword(SecureUtil.md5().digestHex(resetPassword));
  87. userService.saveSelectiveSso(user);
  88. }
  89. UsernamePasswordToken token = new UsernamePasswordToken();
  90. token.setUsername((String) jsonObject.get("userId"));
  91. token.setPassword(resetPassword.toCharArray());
  92. SecurityUtils.getSubject().login(token);
  93. return "redirect:/admin/home";
  94. }
  95. } catch (ClientProtocolException e) {
  96. e.printStackTrace();
  97. //进行处理操作
  98. } catch (IOException e) {
  99. e.printStackTrace();
  100. } finally {
  101. }
  102. return "redirect:/admin/login";
  103. }
  104. }