|
@@ -1,15 +1,16 @@
|
|
package com.qmth.themis.backend.api;
|
|
package com.qmth.themis.backend.api;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.qmth.themis.backend.util.ServletUtil;
|
|
import com.qmth.themis.backend.util.ServletUtil;
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
import com.qmth.themis.business.dto.AuthDto;
|
|
import com.qmth.themis.business.dto.AuthDto;
|
|
import com.qmth.themis.business.entity.TBSession;
|
|
import com.qmth.themis.business.entity.TBSession;
|
|
import com.qmth.themis.business.entity.TBUser;
|
|
import com.qmth.themis.business.entity.TBUser;
|
|
|
|
+import com.qmth.themis.business.enums.RoleEnum;
|
|
import com.qmth.themis.business.service.EhcacheService;
|
|
import com.qmth.themis.business.service.EhcacheService;
|
|
import com.qmth.themis.business.service.TBSessionService;
|
|
import com.qmth.themis.business.service.TBSessionService;
|
|
import com.qmth.themis.business.service.TBUserService;
|
|
import com.qmth.themis.business.service.TBUserService;
|
|
-import com.qmth.themis.business.util.EhcacheUtil;
|
|
|
|
import com.qmth.themis.business.util.JwtUtil;
|
|
import com.qmth.themis.business.util.JwtUtil;
|
|
import com.qmth.themis.business.util.RedisUtil;
|
|
import com.qmth.themis.business.util.RedisUtil;
|
|
import com.qmth.themis.business.util.SessionUtil;
|
|
import com.qmth.themis.business.util.SessionUtil;
|
|
@@ -63,7 +64,6 @@ public class TBUserController {
|
|
@RequestMapping(value = "/login/account", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/login/account", method = RequestMethod.POST)
|
|
@ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = TBUser.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = TBUser.class)})
|
|
public Result login(@ApiParam(value = "用户信息", required = true) @RequestBody TBUser tbUser, HttpServletRequest request) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeySpecException {
|
|
public Result login(@ApiParam(value = "用户信息", required = true) @RequestBody TBUser tbUser, HttpServletRequest request) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeySpecException {
|
|
- log.info("login is come in");
|
|
|
|
if (Objects.isNull(tbUser.getLoginName()) || Objects.equals(tbUser.getLoginName(), "")) {
|
|
if (Objects.isNull(tbUser.getLoginName()) || Objects.equals(tbUser.getLoginName(), "")) {
|
|
throw new BusinessException(ExceptionResultEnum.LOGIN_NAME_IS_NULL);
|
|
throw new BusinessException(ExceptionResultEnum.LOGIN_NAME_IS_NULL);
|
|
}
|
|
}
|
|
@@ -92,11 +92,10 @@ public class TBUserController {
|
|
}
|
|
}
|
|
Platform platform = Platform.valueOf(ServletUtil.getRequestPlatform(request));
|
|
Platform platform = Platform.valueOf(ServletUtil.getRequestPlatform(request));
|
|
String deviceId = ServletUtil.getRequestDeviceId(request);
|
|
String deviceId = ServletUtil.getRequestDeviceId(request);
|
|
- //生成token
|
|
|
|
- String token = JwtUtil.sign(user.getId(), platform, deviceId);
|
|
|
|
//添加用户鉴权缓存
|
|
//添加用户鉴权缓存
|
|
AuthDto authDto = ehcacheService.addAccountCache(user);
|
|
AuthDto authDto = ehcacheService.addAccountCache(user);
|
|
- EhcacheUtil.get(SystemConstant.AUTH_CACHE, user.getId());
|
|
|
|
|
|
+ //生成token
|
|
|
|
+ String token = JwtUtil.sign(user.getId(), platform, deviceId, authDto.getRoleEnum());
|
|
//添加用户缓存
|
|
//添加用户缓存
|
|
RedisUtil.setUser(user.getId(), platform, user);
|
|
RedisUtil.setUser(user.getId(), platform, user);
|
|
//添加用户会话缓存
|
|
//添加用户会话缓存
|
|
@@ -115,4 +114,23 @@ public class TBUserController {
|
|
public Result list() {
|
|
public Result list() {
|
|
return ResultUtil.ok(SystemConstant.SUCCESS);
|
|
return ResultUtil.ok(SystemConstant.SUCCESS);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @ApiOperation(value = "登出接口")
|
|
|
|
+ @RequestMapping(value = "/logout", method = RequestMethod.GET)
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
|
|
|
|
+ public Result logout(HttpServletRequest request) throws NoSuchAlgorithmException {
|
|
|
|
+ String token = ServletUtil.getRequestToken(request);
|
|
|
|
+ if (Objects.isNull(token) || Objects.equals(token, "")) {
|
|
|
|
+ throw new BusinessException(ExceptionResultEnum.TOKEN_INVALID);
|
|
|
|
+ }
|
|
|
|
+ Platform platform = Platform.valueOf(ServletUtil.getRequestPlatform(request));
|
|
|
|
+ if (Objects.isNull(platform) || Objects.equals(platform, "")) {
|
|
|
|
+ throw new BusinessException(ExceptionResultEnum.PLATFORM_INVALID);
|
|
|
|
+ }
|
|
|
|
+ String userId = JwtUtil.getClaim(token, SystemConstant.JWT_USERID);
|
|
|
|
+ String role = JwtUtil.getClaim(token, SystemConstant.ROLE);
|
|
|
|
+ String sessionId = SessionUtil.digest(Long.parseLong(userId), RoleEnum.valueOf(role), platform.getSource());
|
|
|
|
+ RedisUtil.deleteUserSession(sessionId);
|
|
|
|
+ return ResultUtil.ok(JSONObject.parseObject(SystemConstant.SUCCESS));
|
|
|
|
+ }
|
|
}
|
|
}
|