From b002c09addfe0229aba6182dc370f32e09d1ca9a Mon Sep 17 00:00:00 2001 From: 396264893 <396264893@qq.com> Date: Wed, 16 Jan 2019 12:01:27 +0800 Subject: [PATCH 1/5] =?UTF-8?q?:sparkles:=20=E6=96=B0=E5=A2=9EwebSocket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pigx-auth/pom.xml | 5 ++++ .../auth/config/WebSecurityConfigurer.java | 2 +- .../pigx/auth/config/WebSocketConfig.java | 23 +++++++++++++++++++ ...PigxAuthenticationSuccessEventHandler.java | 11 ++++++++- 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java diff --git a/pigx-auth/pom.xml b/pigx-auth/pom.xml index 9c426e115..3300628fc 100644 --- a/pigx-auth/pom.xml +++ b/pigx-auth/pom.xml @@ -72,6 +72,11 @@ org.springframework.boot spring-boot-starter-freemarker + + + org.springframework.boot + spring-boot-starter-websocket + org.springframework.cloud diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java index 6781dd508..7dea9ad2a 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java @@ -69,7 +69,7 @@ public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { .antMatchers( "/token/**", "/actuator/**", - "/mobile/**").permitAll() + "/mobile/**","/ws/**").permitAll() .anyRequest().authenticated() .and().csrf().disable() .apply(mobileSecurityConfigurer()); diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java new file mode 100644 index 000000000..fb3f9aeb6 --- /dev/null +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java @@ -0,0 +1,23 @@ +package com.pig4cloud.pigx.auth.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.simp.config.MessageBrokerRegistry; +import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; +import org.springframework.web.socket.config.annotation.StompEndpointRegistry; +import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; + +@Configuration +@EnableWebSocketMessageBroker +public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { + @Override + public void registerStompEndpoints(StompEndpointRegistry registry) { + registry.addEndpoint("/ws") + .setAllowedOrigins("*") + .withSockJS(); + } + @Override + public void configureMessageBroker(MessageBrokerRegistry registry) { + //registry.enableSimpleBroker("/loginToAll"); + registry.setUserDestinationPrefix("/user/"); + } +} diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java index b0d5e49c2..c5f9c2c36 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java @@ -18,7 +18,10 @@ package com.pig4cloud.pigx.auth.handler; import com.pig4cloud.pigx.common.security.handler.AbstractAuthenticationSuccessEventHandler; +import com.pig4cloud.pigx.common.security.service.PigxUser; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; @@ -30,6 +33,9 @@ import org.springframework.stereotype.Component; @Component public class PigxAuthenticationSuccessEventHandler extends AbstractAuthenticationSuccessEventHandler { + @Autowired + SimpMessagingTemplate simpMessagingTemplate; + /** * 处理登录成功方法 *

@@ -39,6 +45,9 @@ public class PigxAuthenticationSuccessEventHandler extends AbstractAuthenticatio */ @Override public void handle(Authentication authentication) { - log.info("用户:{} 登录成功", authentication.getPrincipal()); + Object principal = authentication.getPrincipal(); + log.info("用户:{} 登录成功", principal); + PigxUser pigxUser = (PigxUser) principal; + simpMessagingTemplate.convertAndSendToUser(pigxUser.getTenantId().toString(),"/loginToAll",pigxUser.getUsername()); } } From 665f1ba5b705e70ae175910660f4fe752408f1cc Mon Sep 17 00:00:00 2001 From: 396264893 <396264893@qq.com> Date: Wed, 16 Jan 2019 17:41:30 +0800 Subject: [PATCH 2/5] =?UTF-8?q?:sparkles:=20=E6=96=B0=E5=A2=9EwebSocket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/db/2pigxx.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/db/2pigxx.sql b/doc/db/2pigxx.sql index 5dbac2092..809a52ecc 100644 --- a/doc/db/2pigxx.sql +++ b/doc/db/2pigxx.sql @@ -276,7 +276,7 @@ CREATE TABLE `sys_route_conf` ( -- Records of `sys_route_conf` -- ---------------------------- BEGIN; -INSERT INTO `sys_route_conf` VALUES ('1', '工作流管理模块', 'pigx-activiti', '[{\"args\": {\"_genkey_0\": \"/act/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-activiti', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:25', '0'), ('2', '认证中心', 'pigx-auth', '[{\"args\": {\"_genkey_0\": \"/auth/**\"}, \"name\": \"Path\"}]', '[{\"args\": {}, \"name\": \"ValidateCodeGatewayFilter\"}, {\"args\": {}, \"name\": \"PasswordDecoderFilter\"}]', 'lb://pigx-auth', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:29', '0'), ('3', '代码生成模块', 'pigx-codegen', '[{\"args\": {\"_genkey_0\": \"/gen/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-codegen', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:32', '0'), ('4', '定时任务模块', 'pigx-daemon', '[{\"args\": {\"_genkey_0\": \"/daemon/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-daemon', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:34', '0'), ('5', '分布式事务模块', 'pigx-tx-manager', '[{\"args\": {\"_genkey_0\": \"/tx/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-tx-manager', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:36', '0'), ('6', '通用权限模块', 'pigx-upms-biz', '[{\"args\": {\"_genkey_0\": \"/admin/**\"}, \"name\": \"Path\"}]', '[{\"args\": {\"key-resolver\": \"#{@remoteAddrKeyResolver}\", \"redis-rate-limiter.burstCapacity\": \"20\", \"redis-rate-limiter.replenishRate\": \"10\"}, \"name\": \"RequestRateLimiter\"}, {\"args\": {\"name\": \"default\", \"fallbackUri\": \"forward:/fallback\"}, \"name\": \"Hystrix\"}]', 'lb://pigx-upms-biz', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:39', '0'); +INSERT INTO `sys_route_conf` VALUES ('1', '工作流管理模块', 'pigx-activiti', '[{\"args\": {\"_genkey_0\": \"/act/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-activiti', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:25', '0'), ('2', '认证中心', 'pigx-auth', '[{\"args\": {\"_genkey_0\": \"/auth/**\"}, \"name\": \"Path\"}]', '[{\"args\": {}, \"name\": \"ValidateCodeGatewayFilter\"}, {\"args\": {}, \"name\": \"PasswordDecoderFilter\"}]', 'lb://pigx-auth', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:29', '0'), ('3', '代码生成模块', 'pigx-codegen', '[{\"args\": {\"_genkey_0\": \"/gen/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-codegen', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:32', '0'), ('4', '定时任务模块', 'pigx-daemon', '[{\"args\": {\"_genkey_0\": \"/daemon/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-daemon', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:34', '0'), ('5', '分布式事务模块', 'pigx-tx-manager', '[{\"args\": {\"_genkey_0\": \"/tx/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-tx-manager', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:36', '0'), ('6', '通用权限模块', 'pigx-upms-biz', '[{\"args\": {\"_genkey_0\": \"/admin/**\"}, \"name\": \"Path\"}]', '[{\"args\": {\"key-resolver\": \"#{@remoteAddrKeyResolver}\", \"redis-rate-limiter.burstCapacity\": \"20\", \"redis-rate-limiter.replenishRate\": \"10\"}, \"name\": \"RequestRateLimiter\"}, {\"args\": {\"name\": \"default\", \"fallbackUri\": \"forward:/fallback\"}, \"name\": \"Hystrix\"}]', 'lb://pigx-upms-biz', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:39', '0'),(7, '认证中心长连接模块1', 'pigx-auth-ws', '[{\"args\": {\"_genkey_0\": \"/auth/ws/info\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-auth', 0, '2019-01-15 19:37:30', '2019-01-15 19:58:31', '0'),(8, '认证中心长连接模块2', 'pigx-auth-ws', '[{\"args\": {\"_genkey_0\": \"/auth/ws/**\"}, \"name\": \"Path\"}]', '[]', 'lb:ws://pigx-auth', 0, '2019-01-15 19:22:39', '2019-01-15 19:58:28', '0'); COMMIT; -- ---------------------------- From 653f1e8108652adb5f36ace15a8d24f09b0058c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Wed, 16 Jan 2019 22:05:57 +0800 Subject: [PATCH 3/5] :sparkles: Introducing new features. websocket for workflow --- .../pigx/auth/config/WebSocketConfig.java | 27 ++++---- ...PigxAuthenticationSuccessEventHandler.java | 11 ++-- .../resources/config/pigx-activiti-dev.yml | 1 + pigx-visual/pigx-activiti/pom.xml | 5 ++ .../pigx/act/config/ActivitiConfig.java | 11 +++- .../pigx/act/config/WebSocketConfig.java | 66 +++++++++++++++++++ .../listener/LeaveProcessTaskListener.java | 11 ++++ 7 files changed, 115 insertions(+), 17 deletions(-) create mode 100644 pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/WebSocketConfig.java diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java index fb3f9aeb6..0e60586af 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java @@ -6,18 +6,23 @@ import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBr import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; +/** + * @author new + *

+ * WebSocket配置类 + */ @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { - @Override - public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/ws") - .setAllowedOrigins("*") - .withSockJS(); - } - @Override - public void configureMessageBroker(MessageBrokerRegistry registry) { - //registry.enableSimpleBroker("/loginToAll"); - registry.setUserDestinationPrefix("/user/"); - } + @Override + public void registerStompEndpoints(StompEndpointRegistry registry) { + registry.addEndpoint("/ws") + .setAllowedOrigins("*") + .withSockJS(); + } + + @Override + public void configureMessageBroker(MessageBrokerRegistry registry) { + registry.setUserDestinationPrefix("/user/"); + } } diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java index c5f9c2c36..dad9ab42a 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java @@ -19,8 +19,8 @@ package com.pig4cloud.pigx.auth.handler; import com.pig4cloud.pigx.common.security.handler.AbstractAuthenticationSuccessEventHandler; import com.pig4cloud.pigx.common.security.service.PigxUser; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; @@ -31,10 +31,9 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component +@AllArgsConstructor public class PigxAuthenticationSuccessEventHandler extends AbstractAuthenticationSuccessEventHandler { - - @Autowired - SimpMessagingTemplate simpMessagingTemplate; + private final SimpMessagingTemplate simpMessagingTemplate; /** * 处理登录成功方法 @@ -48,6 +47,8 @@ public class PigxAuthenticationSuccessEventHandler extends AbstractAuthenticatio Object principal = authentication.getPrincipal(); log.info("用户:{} 登录成功", principal); PigxUser pigxUser = (PigxUser) principal; - simpMessagingTemplate.convertAndSendToUser(pigxUser.getTenantId().toString(),"/loginToAll",pigxUser.getUsername()); + + String user = String.format("%s-%s", pigxUser.getUsername(), pigxUser.getTenantId()); + simpMessagingTemplate.convertAndSendToUser(user, "/loginRemind", pigxUser.getUsername()); } } diff --git a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml index bc971188c..ca34ffc90 100644 --- a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml @@ -13,6 +13,7 @@ security: - '/task/view/*' - '/process/resource/**' - '/modeler.html' + - '/ws/**' spring: autoconfigure: exclude: org.activiti.spring.boot.SecurityAutoConfiguration diff --git a/pigx-visual/pigx-activiti/pom.xml b/pigx-visual/pigx-activiti/pom.xml index 026a95ca3..4ec905bbd 100644 --- a/pigx-visual/pigx-activiti/pom.xml +++ b/pigx-visual/pigx-activiti/pom.xml @@ -65,6 +65,11 @@ pigx-common-swagger 2.1.1 + + + org.springframework.boot + spring-boot-starter-websocket + org.activiti diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ActivitiConfig.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ActivitiConfig.java index 5034827fd..d3e35deb3 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ActivitiConfig.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ActivitiConfig.java @@ -21,6 +21,9 @@ import lombok.AllArgsConstructor; import org.activiti.spring.SpringProcessEngineConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.task.TaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; @@ -39,7 +42,7 @@ public class ActivitiConfig { @Bean public SpringProcessEngineConfiguration getProcessEngineConfiguration() { SpringProcessEngineConfiguration config = - new SpringProcessEngineConfiguration(); + new SpringProcessEngineConfiguration(); // 流程图字体设置 config.setActivityFontName("宋体"); config.setAnnotationFontName("宋体"); @@ -51,4 +54,10 @@ public class ActivitiConfig { config.setDatabaseSchemaUpdate("true"); return config; } + + @Bean + @Primary + public TaskExecutor primaryTaskExecutor() { + return new ThreadPoolTaskExecutor(); + } } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/WebSocketConfig.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/WebSocketConfig.java new file mode 100644 index 000000000..012ec28cb --- /dev/null +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/WebSocketConfig.java @@ -0,0 +1,66 @@ +package com.pig4cloud.pigx.act.config; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.simp.config.ChannelRegistration; +import org.springframework.messaging.simp.config.MessageBrokerRegistry; +import org.springframework.messaging.simp.stomp.StompCommand; +import org.springframework.messaging.simp.stomp.StompHeaderAccessor; +import org.springframework.messaging.support.ChannelInterceptor; +import org.springframework.messaging.support.MessageHeaderAccessor; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.oauth2.provider.OAuth2Authentication; +import org.springframework.security.oauth2.provider.token.RemoteTokenServices; +import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; +import org.springframework.web.socket.config.annotation.StompEndpointRegistry; +import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; + +/** + * @author new + *

+ * WebSocket配置类 + */ +@Slf4j +@Configuration +@AllArgsConstructor +@EnableWebSocketMessageBroker +public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { + private RemoteTokenServices tokenService; + + @Override + public void registerStompEndpoints(StompEndpointRegistry registry) { + registry.addEndpoint("/ws") + .setAllowedOrigins("*") + .withSockJS(); + } + + @Override + public void configureMessageBroker(MessageBrokerRegistry registry) { + registry.setUserDestinationPrefix("/task/"); + } + + @Override + public void configureClientInboundChannel(ChannelRegistration registration) { + registration.interceptors(new ChannelInterceptor() { + @Override + public Message preSend(Message message, MessageChannel channel) { + StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); + if (StompCommand.CONNECT.equals(accessor.getCommand())) { + String tokens = accessor.getFirstNativeHeader("Authorization"); + log.info("webSocket token is {}", tokens); + if (StrUtil.isBlank(tokens)) { + return null; + } + OAuth2Authentication auth2Authentication = tokenService.loadAuthentication(tokens.split(" ")[1]); + SecurityContextHolder.getContext().setAuthentication(auth2Authentication); + accessor.setUser(() -> (String) auth2Authentication.getPrincipal()); + } + return message; + } + }); + } +} diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java index 0e2addf43..012b27613 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java @@ -22,11 +22,14 @@ import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.core.util.SpringContextHolder; +import com.pig4cloud.pigx.common.data.tenant.TenantContextHolder; import com.pig4cloud.pigx.common.security.util.SecurityUtils; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.springframework.messaging.simp.SimpMessagingTemplate; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -45,18 +48,26 @@ public class LeaveProcessTaskListener implements TaskListener { */ @Override public void notify(DelegateTask delegateTask) { + SimpMessagingTemplate simpMessagingTemplate = SpringContextHolder.getBean(SimpMessagingTemplate.class); RemoteUserService userService = SpringContextHolder.getBean(RemoteUserService.class); R> result = userService.ancestorUsers(SecurityUtils.getUsername()); + List remindUserList = new ArrayList<>(); if (CollUtil.isEmpty(result.getData())) { log.info("用户 {} 不存在上级,任务单由当前用户审批", SecurityUtils.getUsername()); delegateTask.addCandidateUser(SecurityUtils.getUsername()); + remindUserList.add(SecurityUtils.getUsername()); } else { List userList = result.getData().stream().map(SysUser::getUsername).collect(Collectors.toList()); log.info("当前任务 {},由 {}处理", delegateTask.getId(), userList); delegateTask.addCandidateUsers(userList); + remindUserList.addAll(userList); } + remindUserList.forEach(user -> { + String target = String.format("%s-%s", SecurityUtils.getUsername(), TenantContextHolder.getTenantId()); + simpMessagingTemplate.convertAndSendToUser(target, "/remind", delegateTask.getName()); + }); } } From 41b6051b99e8b03b01e49264f8914dc57e806015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Wed, 16 Jan 2019 22:09:06 +0800 Subject: [PATCH 4/5] =?UTF-8?q?:card=5Ffile=5Fbox:=20=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9B=B8=E5=85=B3=E7=9A=84=E5=8F=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E8=B7=AF=E7=94=B1=E8=A1=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/db/2pigxx.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/db/2pigxx.sql b/doc/db/2pigxx.sql index 809a52ecc..0106a37f0 100644 --- a/doc/db/2pigxx.sql +++ b/doc/db/2pigxx.sql @@ -276,7 +276,7 @@ CREATE TABLE `sys_route_conf` ( -- Records of `sys_route_conf` -- ---------------------------- BEGIN; -INSERT INTO `sys_route_conf` VALUES ('1', '工作流管理模块', 'pigx-activiti', '[{\"args\": {\"_genkey_0\": \"/act/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-activiti', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:25', '0'), ('2', '认证中心', 'pigx-auth', '[{\"args\": {\"_genkey_0\": \"/auth/**\"}, \"name\": \"Path\"}]', '[{\"args\": {}, \"name\": \"ValidateCodeGatewayFilter\"}, {\"args\": {}, \"name\": \"PasswordDecoderFilter\"}]', 'lb://pigx-auth', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:29', '0'), ('3', '代码生成模块', 'pigx-codegen', '[{\"args\": {\"_genkey_0\": \"/gen/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-codegen', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:32', '0'), ('4', '定时任务模块', 'pigx-daemon', '[{\"args\": {\"_genkey_0\": \"/daemon/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-daemon', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:34', '0'), ('5', '分布式事务模块', 'pigx-tx-manager', '[{\"args\": {\"_genkey_0\": \"/tx/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-tx-manager', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:36', '0'), ('6', '通用权限模块', 'pigx-upms-biz', '[{\"args\": {\"_genkey_0\": \"/admin/**\"}, \"name\": \"Path\"}]', '[{\"args\": {\"key-resolver\": \"#{@remoteAddrKeyResolver}\", \"redis-rate-limiter.burstCapacity\": \"20\", \"redis-rate-limiter.replenishRate\": \"10\"}, \"name\": \"RequestRateLimiter\"}, {\"args\": {\"name\": \"default\", \"fallbackUri\": \"forward:/fallback\"}, \"name\": \"Hystrix\"}]', 'lb://pigx-upms-biz', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:39', '0'),(7, '认证中心长连接模块1', 'pigx-auth-ws', '[{\"args\": {\"_genkey_0\": \"/auth/ws/info\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-auth', 0, '2019-01-15 19:37:30', '2019-01-15 19:58:31', '0'),(8, '认证中心长连接模块2', 'pigx-auth-ws', '[{\"args\": {\"_genkey_0\": \"/auth/ws/**\"}, \"name\": \"Path\"}]', '[]', 'lb:ws://pigx-auth', 0, '2019-01-15 19:22:39', '2019-01-15 19:58:28', '0'); +INSERT INTO `sys_route_conf` VALUES ('1', '工作流管理模块', 'pigx-activiti', '[{\"args\": {\"_genkey_0\": \"/act/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-activiti', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:25', '0'), ('2', '认证中心', 'pigx-auth', '[{\"args\": {\"_genkey_0\": \"/auth/**\"}, \"name\": \"Path\"}]', '[{\"args\": {}, \"name\": \"ValidateCodeGatewayFilter\"}, {\"args\": {}, \"name\": \"PasswordDecoderFilter\"}]', 'lb://pigx-auth', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:29', '0'), ('3', '代码生成模块', 'pigx-codegen', '[{\"args\": {\"_genkey_0\": \"/gen/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-codegen', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:32', '0'), ('4', '定时任务模块', 'pigx-daemon', '[{\"args\": {\"_genkey_0\": \"/daemon/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-daemon', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:34', '0'), ('5', '分布式事务模块', 'pigx-tx-manager', '[{\"args\": {\"_genkey_0\": \"/tx/**\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-tx-manager', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:36', '0'), ('6', '通用权限模块', 'pigx-upms-biz', '[{\"args\": {\"_genkey_0\": \"/admin/**\"}, \"name\": \"Path\"}]', '[{\"args\": {\"key-resolver\": \"#{@remoteAddrKeyResolver}\", \"redis-rate-limiter.burstCapacity\": \"20\", \"redis-rate-limiter.replenishRate\": \"10\"}, \"name\": \"RequestRateLimiter\"}, {\"args\": {\"name\": \"default\", \"fallbackUri\": \"forward:/fallback\"}, \"name\": \"Hystrix\"}]', 'lb://pigx-upms-biz', '0', '2018-11-28 15:56:10', '2018-11-28 15:56:39', '0'), ('7', '认证中心长连接模块1', 'pigx-auth-ws-1', '[{\"args\": {\"_genkey_0\": \"/auth/ws/info\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-auth', '0', '2019-01-15 19:37:30', '2019-01-16 20:54:47', '0'), ('8', '认证中心长连接模块2', 'pigx-auth-ws-2', '[{\"args\": {\"_genkey_0\": \"/auth/ws/**\"}, \"name\": \"Path\"}]', '[]', 'lb:ws://pigx-auth', '0', '2019-01-15 19:22:39', '2019-01-16 20:54:51', '0'), ('9', '工作流长链接支持1', 'pigx-activiti-ws-1', '[{\"args\": {\"_genkey_0\": \"/act/ws/**\"}, \"name\": \"Path\"}]', '[]', 'lb:ws://pigx-activiti', '0', '2019-01-15 19:22:39', '2019-01-16 20:54:56', '0'), ('10', '工作流长链接支持2', 'pigx-activiti-ws-2', '[{\"args\": {\"_genkey_0\": \"/act/ws/info\"}, \"name\": \"Path\"}]', '[]', 'lb://pigx-activiti', '0', '2019-01-15 19:37:30', '2019-01-16 20:55:07', '0'); COMMIT; -- ---------------------------- From 81f4d91b7bbf41963f23940827b4f44369444a2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Fri, 18 Jan 2019 09:30:56 +0800 Subject: [PATCH 5/5] :fire: Removing code or files. --- pigx-auth/pom.xml | 5 ---- .../auth/config/WebSecurityConfigurer.java | 2 +- .../pigx/auth/config/WebSocketConfig.java | 28 ------------------- ...PigxAuthenticationSuccessEventHandler.java | 12 +------- 4 files changed, 2 insertions(+), 45 deletions(-) delete mode 100644 pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java diff --git a/pigx-auth/pom.xml b/pigx-auth/pom.xml index 3300628fc..9c426e115 100644 --- a/pigx-auth/pom.xml +++ b/pigx-auth/pom.xml @@ -72,11 +72,6 @@ org.springframework.boot spring-boot-starter-freemarker - - - org.springframework.boot - spring-boot-starter-websocket - org.springframework.cloud diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java index 7dea9ad2a..6781dd508 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java @@ -69,7 +69,7 @@ public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { .antMatchers( "/token/**", "/actuator/**", - "/mobile/**","/ws/**").permitAll() + "/mobile/**").permitAll() .anyRequest().authenticated() .and().csrf().disable() .apply(mobileSecurityConfigurer()); diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java deleted file mode 100644 index 0e60586af..000000000 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSocketConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.pig4cloud.pigx.auth.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.messaging.simp.config.MessageBrokerRegistry; -import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; -import org.springframework.web.socket.config.annotation.StompEndpointRegistry; -import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; - -/** - * @author new - *

- * WebSocket配置类 - */ -@Configuration -@EnableWebSocketMessageBroker -public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { - @Override - public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/ws") - .setAllowedOrigins("*") - .withSockJS(); - } - - @Override - public void configureMessageBroker(MessageBrokerRegistry registry) { - registry.setUserDestinationPrefix("/user/"); - } -} diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java index dad9ab42a..b0d5e49c2 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java @@ -18,10 +18,7 @@ package com.pig4cloud.pigx.auth.handler; import com.pig4cloud.pigx.common.security.handler.AbstractAuthenticationSuccessEventHandler; -import com.pig4cloud.pigx.common.security.service.PigxUser; -import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; @@ -31,9 +28,7 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -@AllArgsConstructor public class PigxAuthenticationSuccessEventHandler extends AbstractAuthenticationSuccessEventHandler { - private final SimpMessagingTemplate simpMessagingTemplate; /** * 处理登录成功方法 @@ -44,11 +39,6 @@ public class PigxAuthenticationSuccessEventHandler extends AbstractAuthenticatio */ @Override public void handle(Authentication authentication) { - Object principal = authentication.getPrincipal(); - log.info("用户:{} 登录成功", principal); - PigxUser pigxUser = (PigxUser) principal; - - String user = String.format("%s-%s", pigxUser.getUsername(), pigxUser.getTenantId()); - simpMessagingTemplate.convertAndSendToUser(user, "/loginRemind", pigxUser.getUsername()); + log.info("用户:{} 登录成功", authentication.getPrincipal()); } }