增加token续期

master
bynt 3 years ago
parent c048af80aa
commit 543af053b6

@ -112,6 +112,7 @@ public class TokenProvider implements InitializingBean {
if (differ <= properties.getDetect()) { if (differ <= properties.getDetect()) {
long renew = time + properties.getRenew(); long renew = time + properties.getRenew();
redisUtils.expire(properties.getOnlineKey() + token, renew, TimeUnit.MILLISECONDS); redisUtils.expire(properties.getOnlineKey() + token, renew, TimeUnit.MILLISECONDS);
redisUtils.expire(token, renew, TimeUnit.MILLISECONDS);
return true; return true;
} }
return false; return false;

@ -19,7 +19,6 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
@ -31,6 +30,7 @@ import java.util.Date;
@NoArgsConstructor @NoArgsConstructor
public class OnlineUserDto { public class OnlineUserDto {
/** /**
* *
*/ */

@ -49,11 +49,12 @@ public class OnlineUserService {
/** /**
* 线 * 线
*
* @param jwtUserDto / * @param jwtUserDto /
* @param token / * @param token /
* @param request / * @param request /
*/ */
public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request){ public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request) {
String ip = StringUtils.getIp(request); String ip = StringUtils.getIp(request);
String browser = StringUtils.getBrowser(request); String browser = StringUtils.getBrowser(request);
String address = StringUtils.getCityInfo(ip); String address = StringUtils.getCityInfo(ip);
@ -61,39 +62,41 @@ public class OnlineUserService {
try { try {
onlineUserDto = new OnlineUserDto(jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), "", browser, ip, address, EncryptUtils.desEncrypt(token), new Date()); onlineUserDto = new OnlineUserDto(jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), "", browser, ip, address, EncryptUtils.desEncrypt(token), new Date());
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(),e); log.error(e.getMessage(), e);
} }
redisUtils.set(properties.getOnlineKey() + token, onlineUserDto, properties.getTokenValidityInSeconds()/1000); redisUtils.set(properties.getOnlineKey() + token, onlineUserDto, properties.getTokenValidityInSeconds() / 1000);
redisUtils.set(token, jwtUserDto.getUser().getId(), properties.getTokenValidityInSeconds()/1000); redisUtils.set(token, jwtUserDto.getUser().getId(), properties.getTokenValidityInSeconds() / 1000);
} }
/** /**
* *
* @param filter / *
* @param filter /
* @param pageable / * @param pageable /
* @return / * @return /
*/ */
public Map<String,Object> getAll(String filter, Pageable pageable){ public Map<String, Object> getAll(String filter, Pageable pageable) {
List<OnlineUserDto> onlineUserDtos = getAll(filter); List<OnlineUserDto> onlineUserDtos = getAll(filter);
return PageUtil.toPage( return PageUtil.toPage(
PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(), onlineUserDtos), PageUtil.toPage(pageable.getPageNumber(), pageable.getPageSize(), onlineUserDtos),
onlineUserDtos.size() onlineUserDtos.size()
); );
} }
/** /**
* *
*
* @param filter / * @param filter /
* @return / * @return /
*/ */
public List<OnlineUserDto> getAll(String filter){ public List<OnlineUserDto> getAll(String filter) {
List<String> keys = redisUtils.scan(properties.getOnlineKey() + "*"); List<String> keys = redisUtils.scan(properties.getOnlineKey() + "*");
Collections.reverse(keys); Collections.reverse(keys);
List<OnlineUserDto> onlineUserDtos = new ArrayList<>(); List<OnlineUserDto> onlineUserDtos = new ArrayList<>();
for (String key : keys) { for (String key : keys) {
OnlineUserDto onlineUserDto = (OnlineUserDto) redisUtils.get(key); OnlineUserDto onlineUserDto = (OnlineUserDto) redisUtils.get(key);
if(StringUtils.isNotBlank(filter)){ if (StringUtils.isNotBlank(filter)) {
if(onlineUserDto.toString().contains(filter)){ if (onlineUserDto.toString().contains(filter)) {
onlineUserDtos.add(onlineUserDto); onlineUserDtos.add(onlineUserDto);
} }
} else { } else {
@ -106,15 +109,17 @@ public class OnlineUserService {
/** /**
* *
*
* @param key / * @param key /
*/ */
public void kickOut(String key){ public void kickOut(String key) {
key = properties.getOnlineKey() + key; key = properties.getOnlineKey() + key;
redisUtils.del(key); redisUtils.del(key);
} }
/** /**
* 退 * 退
*
* @param token / * @param token /
*/ */
public void logout(String token) { public void logout(String token) {
@ -124,14 +129,15 @@ public class OnlineUserService {
/** /**
* *
* @param all / *
* @param all /
* @param response / * @param response /
* @throws IOException / * @throws IOException /
*/ */
public void download(List<OnlineUserDto> all, HttpServletResponse response) throws IOException { public void download(List<OnlineUserDto> all, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
for (OnlineUserDto user : all) { for (OnlineUserDto user : all) {
Map<String,Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
map.put("用户名", user.getUserName()); map.put("用户名", user.getUserName());
map.put("部门", user.getDept()); map.put("部门", user.getDept());
map.put("登录IP", user.getIp()); map.put("登录IP", user.getIp());
@ -145,6 +151,7 @@ public class OnlineUserService {
/** /**
* *
*
* @param key / * @param key /
* @return / * @return /
*/ */
@ -154,24 +161,25 @@ public class OnlineUserService {
/** /**
* 线 * 线
*
* @param userName * @param userName
*/ */
public void checkLoginOnUser(String userName, String igoreToken){ public void checkLoginOnUser(String userName, String igoreToken) {
List<OnlineUserDto> onlineUserDtos = getAll(userName); List<OnlineUserDto> onlineUserDtos = getAll(userName);
if(onlineUserDtos ==null || onlineUserDtos.isEmpty()){ if (onlineUserDtos == null || onlineUserDtos.isEmpty()) {
return; return;
} }
for(OnlineUserDto onlineUserDto : onlineUserDtos){ for (OnlineUserDto onlineUserDto : onlineUserDtos) {
if(onlineUserDto.getUserName().equals(userName)){ if (onlineUserDto.getUserName().equals(userName)) {
try { try {
String token =EncryptUtils.desDecrypt(onlineUserDto.getKey()); String token = EncryptUtils.desDecrypt(onlineUserDto.getKey());
if(StringUtils.isNotBlank(igoreToken)&&!igoreToken.equals(token)){ if (StringUtils.isNotBlank(igoreToken) && !igoreToken.equals(token)) {
this.kickOut(token); this.kickOut(token);
}else if(StringUtils.isBlank(igoreToken)){ } else if (StringUtils.isBlank(igoreToken)) {
this.kickOut(token); this.kickOut(token);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("checkUser is error",e); log.error("checkUser is error", e);
} }
} }
} }
@ -179,6 +187,7 @@ public class OnlineUserService {
/** /**
* 退 * 退
*
* @param username / * @param username /
*/ */
@Async @Async
@ -186,7 +195,7 @@ public class OnlineUserService {
List<OnlineUserDto> onlineUsers = getAll(username); List<OnlineUserDto> onlineUsers = getAll(username);
for (OnlineUserDto onlineUser : onlineUsers) { for (OnlineUserDto onlineUser : onlineUsers) {
if (onlineUser.getUserName().equals(username)) { if (onlineUser.getUserName().equals(username)) {
String token =EncryptUtils.desDecrypt(onlineUser.getKey()); String token = EncryptUtils.desDecrypt(onlineUser.getKey());
kickOut(token); kickOut(token);
} }
} }

@ -135,6 +135,7 @@ public class WebSocketServer {
break; break;
case DefaultNumberConstants.FIVE_NUMBER: case DefaultNumberConstants.FIVE_NUMBER:
Long userId = getUserId(session); Long userId = getUserId(session);
log.info("================= userId as {} ====================", userId);
if (userId != null) { if (userId != null) {
messageNotificationService.create messageNotificationService.create
(message, userId); (message, userId);

Loading…
Cancel
Save