Browse Source

登录事件

24282 2 years ago
parent
commit
44ae0b111c

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -108,7 +108,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                 // 过滤请求
                 // 过滤请求
                 .authorizeRequests()
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage", "/webStock/*").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage", "/webStock/*", "/open/**").permitAll()
                 // 静态资源,可匿名访问
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 3 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java

@@ -29,7 +29,9 @@ public class ThreadPoolConfig {
     // 线程池维护线程所允许的空闲时间
     // 线程池维护线程所允许的空闲时间
     private int keepAliveSeconds = 300;
     private int keepAliveSeconds = 300;
 
 
-    @Bean(name = "threadPoolTaskExecutor")
+    public static final String threadPoolTaskExecutor = "threadPoolTaskExecutor";
+
+    @Bean(name = threadPoolTaskExecutor)
     public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
     public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         executor.setMaxPoolSize(maxPoolSize);
         executor.setMaxPoolSize(maxPoolSize);

+ 13 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/event/LoginEvent.java

@@ -0,0 +1,13 @@
+package com.ruoyi.framework.event;
+
+import lombok.Getter;
+import org.springframework.context.ApplicationEvent;
+
+@Getter
+public class LoginEvent extends ApplicationEvent {
+
+    public LoginEvent(Long userId) {
+        super(userId);
+    }
+
+}

+ 9 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -12,12 +12,14 @@ import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.MessageUtils;
 import com.ruoyi.common.utils.MessageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.IpUtils;
 import com.ruoyi.common.utils.ip.IpUtils;
+import com.ruoyi.framework.event.LoginEvent;
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
 import com.ruoyi.framework.security.context.AuthenticationContextHolder;
 import com.ruoyi.framework.security.context.AuthenticationContextHolder;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -48,6 +50,9 @@ public class SysLoginService {
     @Autowired
     @Autowired
     private ISysConfigService configService;
     private ISysConfigService configService;
 
 
+    @Autowired
+    private ApplicationContext applicationContext;
+
     /**
     /**
      * 登录验证
      * 登录验证
      *
      *
@@ -86,6 +91,10 @@ public class SysLoginService {
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         recordLoginInfo(loginUser.getUserId());
         recordLoginInfo(loginUser.getUserId());
+
+        // 发布用户登录时间
+        applicationContext.publishEvent(new LoginEvent(loginUser.getUserId()));
+
         // 生成token
         // 生成token
         return tokenService.createToken(loginUser);
         return tokenService.createToken(loginUser);
     }
     }