增加token续期

master
bynt 3 years ago
parent c048af80aa
commit 543af053b6

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

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

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

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

Loading…
Cancel
Save