LoginController.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.gihon.sso.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.PostMapping;
  5. import org.springframework.web.bind.annotation.RequestBody;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestParam;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import com.gihon.common.auth.AuthUtils;
  10. import com.gihon.common.web.response.Response;
  11. import com.gihon.common.web.response.ResponseStatus;
  12. import com.gihon.sso.entity.vo.LoginUser;
  13. import com.gihon.sso.entity.vo.SsoToken;
  14. import com.gihon.sso.entity.vo.UserInfo;
  15. import com.gihon.sso.service.LoginUserService;
  16. import com.gihon.sso.service.TokenService;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import io.swagger.annotations.ApiParam;
  20. import lombok.extern.slf4j.Slf4j;
  21. @Api("SSO认证模块")
  22. @Slf4j
  23. @RequestMapping("${gihon.common.login-path}")
  24. @RestController
  25. public class LoginController {
  26. @Autowired
  27. private LoginUserService userService;
  28. @Autowired
  29. private TokenService tokenService;
  30. /**
  31. * 登录获取Token
  32. *
  33. * @param loginUser
  34. * @return
  35. */
  36. @ApiOperation("SSO:登录")
  37. @PostMapping()
  38. public Response<SsoToken> login(@RequestBody LoginUser loginUser) {
  39. log.debug("SSO登录开始:{}", loginUser.getUserAccount());
  40. UserInfo userInfo = userService.queryUserForLogin(loginUser.getUserAccount(),loginUser.getPassWord());
  41. SsoToken token = null;
  42. Response<SsoToken> result = null;
  43. if(userInfo!=null) {
  44. token = tokenService.createToken(userInfo,loginUser.getMudoleType());
  45. result = Response.ok(token);
  46. }else {
  47. result = Response.error(ResponseStatus.LOGIN_ERROR);
  48. }
  49. log.debug("SSO登录结束:{}/{}", loginUser.getUserAccount(),token);
  50. return result;
  51. }
  52. /**
  53. * 用token获取用户信息 返回用户信息或者token失效
  54. * @param loginUser
  55. * @return
  56. */
  57. @ApiOperation("SSO:token获取用户信息")
  58. @GetMapping("useInfo")
  59. public Response<UserInfo> userInfo() {
  60. String token = (String)AuthUtils.getRequest().getAttribute(AuthUtils.REQ_TOKEN);
  61. UserInfo userInfo = tokenService.checkTokenInfo(token);
  62. Response<UserInfo> result = null;
  63. if(userInfo!=null) {
  64. result = Response.ok(userInfo);
  65. }else {
  66. result = Response.error(ResponseStatus.TOKEN_EXPIRED);
  67. }
  68. return result;
  69. }
  70. /**
  71. * 登出将Token失效,并且通知所有的token相关的系统url
  72. *
  73. * @param loginUser
  74. * @return
  75. */
  76. @ApiOperation("SSO:登出")
  77. @GetMapping("logout")
  78. public Response<Void> logOut() {
  79. String token = (String)AuthUtils.getRequest().getAttribute(AuthUtils.REQ_TOKEN);
  80. tokenService.clearToken(token);
  81. log.debug("SSO退出:{}", token);
  82. return Response.ok();
  83. }
  84. /**
  85. * 刷新token,并且通知所有的token相关的系统url
  86. *
  87. * @param loginUser
  88. * @return
  89. */
  90. @ApiOperation("SSO:refresh刷新token")
  91. @ApiParam(name="refreshToken",value = "refreshToken" ,required = true,type = "query")
  92. @PostMapping("refresh")
  93. public Response<SsoToken> refreshToken(@RequestParam("refreshToken") String refreshToken) {
  94. SsoToken token = tokenService.refreshToken(refreshToken);
  95. Response<SsoToken> result = null;
  96. if(token!=null) {
  97. result = Response.ok(token);
  98. }else {
  99. result = Response.error(ResponseStatus.REFRESH_TOKEN_EXPIRED);
  100. }
  101. return result;
  102. }
  103. }