diff --git a/nladmin-system/pom.xml b/nladmin-system/pom.xml index 44f116622..62cc48878 100644 --- a/nladmin-system/pom.xml +++ b/nladmin-system/pom.xml @@ -20,6 +20,14 @@ + + + + org.springframework.boot + spring-boot-starter-data-redis + + + com.hynnet jxl diff --git a/nladmin-system/src/main/java/org/nl/modules/security/rest/AuthorizationController.java b/nladmin-system/src/main/java/org/nl/modules/security/rest/AuthorizationController.java index 40c37cf63..389c4eb7b 100644 --- a/nladmin-system/src/main/java/org/nl/modules/security/rest/AuthorizationController.java +++ b/nladmin-system/src/main/java/org/nl/modules/security/rest/AuthorizationController.java @@ -118,8 +118,10 @@ public class AuthorizationController { put("user", jsonObject); }}; + redisUtils.set("my-satoken", StpUtil.getTokenValue(), StpUtil.getTokenTimeout()); + // 保存在线信息 - onlineUserService.save(userDto, StpUtil.getTokenValue(), request); +// onlineUserService.save(userDto, StpUtil.getTokenValue(), request); return ResponseEntity.ok(authInfo); } @@ -157,7 +159,7 @@ public class AuthorizationController { @ApiOperation("退出登录") @DeleteMapping(value = "/logout") public ResponseEntity logout(HttpServletRequest request) { - onlineUserService.logout(StpUtil.getTokenValue()); +// onlineUserService.logout(StpUtil.getTokenValue()); StpUtil.logout(); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/nladmin-system/src/main/java/org/nl/modules/security/satoken/RedisListenerConfig.java b/nladmin-system/src/main/java/org/nl/modules/security/satoken/RedisListenerConfig.java new file mode 100644 index 000000000..b8245f869 --- /dev/null +++ b/nladmin-system/src/main/java/org/nl/modules/security/satoken/RedisListenerConfig.java @@ -0,0 +1,21 @@ +package org.nl.modules.security.satoken; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.listener.RedisMessageListenerContainer; + +/** + * @author: lyd + * @description: + * @Date: 2022/10/8 + */ +@Configuration +public class RedisListenerConfig { + @Bean + RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { + RedisMessageListenerContainer container = new RedisMessageListenerContainer(); + container.setConnectionFactory(connectionFactory); + return container; + } +} diff --git a/nladmin-system/src/main/java/org/nl/modules/security/satoken/TokenKeyExpirationListener.java b/nladmin-system/src/main/java/org/nl/modules/security/satoken/TokenKeyExpirationListener.java new file mode 100644 index 000000000..77377246e --- /dev/null +++ b/nladmin-system/src/main/java/org/nl/modules/security/satoken/TokenKeyExpirationListener.java @@ -0,0 +1,51 @@ +package org.nl.modules.security.satoken; + + +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.mnt.websocket.MsgType; +import org.nl.modules.mnt.websocket.SocketMsg; +import org.nl.modules.mnt.websocket.WebSocketServer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.connection.Message; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; +import org.springframework.data.redis.listener.RedisMessageListenerContainer; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +/** + * @author: lyd + * @description: + * @Date: 2022/10/8 + */ +@Slf4j +@Component +public class TokenKeyExpirationListener extends KeyExpirationEventMessageListener { + @Autowired + private StringRedisTemplate redisTemplate; + + public TokenKeyExpirationListener(RedisMessageListenerContainer listenerContainer) { + super(listenerContainer); + } + + @Override + public void onMessage(Message message, byte[] pattern) { + // 监听过期的key + String expireKey = new String(message.getBody(), StandardCharsets.UTF_8); + //获取key原本的value 获取不到 是null + String expireKeyValue = redisTemplate.opsForValue().get("my-satoken"); + //我是根据tokenvalues作为主键ID的 + String[] split = expireKey.split(":"); + String s = split[split.length - 1]; + try { + WebSocketServer.sendInfo(new SocketMsg("token会话过期!", MsgType.INFO), "exp-token"); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + log.info("expireKey---"+expireKey); + log.info("expireKeyValue---"+expireKeyValue); + } + +} diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/impl/ParamServiceImpl.java b/nladmin-system/src/main/java/org/nl/modules/system/service/impl/ParamServiceImpl.java index 766af3e7d..1ebae3afb 100644 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/impl/ParamServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/modules/system/service/impl/ParamServiceImpl.java @@ -15,7 +15,6 @@ import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.common.utils.dto.CurrentUser; import org.nl.modules.system.service.ParamService; import org.nl.modules.system.service.dto.ParamDto; -import org.nl.modules.system.service.dto.UserDto; import org.nl.modules.wql.core.bean.ResultBean; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; diff --git a/nladmin-system/src/main/resources/config/application-dev.yml b/nladmin-system/src/main/resources/config/application-dev.yml index fcfd85f80..d1e0057f3 100644 --- a/nladmin-system/src/main/resources/config/application-dev.yml +++ b/nladmin-system/src/main/resources/config/application-dev.yml @@ -6,6 +6,10 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:nladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true +# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:nladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + username: ${DB_USER:root} +# username: ${DB_USER:root} url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_one_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:nladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} diff --git a/nladmin-ui/src/App.vue b/nladmin-ui/src/App.vue index ec9032c1c..3f8e408bd 100644 --- a/nladmin-ui/src/App.vue +++ b/nladmin-ui/src/App.vue @@ -6,6 +6,65 @@