123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package com.gihon.sso.controller;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import com.gihon.common.auth.AuthUtils;
- import com.gihon.common.web.response.Response;
- import com.gihon.common.web.response.ResponseStatus;
- import com.gihon.sso.entity.vo.LoginUser;
- import com.gihon.sso.entity.vo.SsoToken;
- import com.gihon.sso.entity.vo.UserInfo;
- import com.gihon.sso.service.LoginUserService;
- import com.gihon.sso.service.TokenService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import lombok.extern.slf4j.Slf4j;
- @Api("SSO认证模块")
- @Slf4j
- @RequestMapping("${gihon.common.login-path}")
- @RestController
- public class LoginController {
- @Autowired
- private LoginUserService userService;
- @Autowired
- private TokenService tokenService;
- /**
- * 登录获取Token
- *
- * @param loginUser
- * @return
- */
- @ApiOperation("SSO:登录")
- @PostMapping()
- public Response<SsoToken> login(@RequestBody LoginUser loginUser) {
- log.debug("SSO登录开始:{}", loginUser.getUserAccount());
- UserInfo userInfo = userService.queryUserForLogin(loginUser.getUserAccount(),loginUser.getPassWord());
- SsoToken token = null;
- Response<SsoToken> result = null;
- if(userInfo!=null) {
- token = tokenService.createToken(userInfo,loginUser.getMudoleType());
- result = Response.ok(token);
- }else {
- result = Response.error(ResponseStatus.LOGIN_ERROR);
- }
- log.debug("SSO登录结束:{}/{}", loginUser.getUserAccount(),token);
- return result;
- }
- /**
- * 用token获取用户信息 返回用户信息或者token失效
- * @param loginUser
- * @return
- */
- @ApiOperation("SSO:token获取用户信息")
- @GetMapping("useInfo")
- public Response<UserInfo> userInfo() {
- String token = (String)AuthUtils.getRequest().getAttribute(AuthUtils.REQ_TOKEN);
- UserInfo userInfo = tokenService.checkTokenInfo(token);
- Response<UserInfo> result = null;
- if(userInfo!=null) {
- result = Response.ok(userInfo);
- }else {
- result = Response.error(ResponseStatus.TOKEN_EXPIRED);
- }
- return result;
- }
- /**
- * 登出将Token失效,并且通知所有的token相关的系统url
- *
- * @param loginUser
- * @return
- */
- @ApiOperation("SSO:登出")
- @GetMapping("logout")
- public Response<Void> logOut() {
- String token = (String)AuthUtils.getRequest().getAttribute(AuthUtils.REQ_TOKEN);
- tokenService.clearToken(token);
- log.debug("SSO退出:{}", token);
- return Response.ok();
- }
- /**
- * 刷新token,并且通知所有的token相关的系统url
- *
- * @param loginUser
- * @return
- */
- @ApiOperation("SSO:refresh刷新token")
- @ApiParam(name="refreshToken",value = "refreshToken" ,required = true,type = "query")
- @PostMapping("refresh")
- public Response<SsoToken> refreshToken(@RequestParam("refreshToken") String refreshToken) {
- SsoToken token = tokenService.refreshToken(refreshToken);
- Response<SsoToken> result = null;
- if(token!=null) {
- result = Response.ok(token);
- }else {
- result = Response.error(ResponseStatus.REFRESH_TOKEN_EXPIRED);
- }
- return result;
- }
- }
|