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] =?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()); } }