Skip to content

Commit bf55485

Browse files
committed
add AuthenticationTokenFilter
1 parent c901b42 commit bf55485

File tree

6 files changed

+34
-8
lines changed

6 files changed

+34
-8
lines changed

springboot-starter-security-jwt/src/main/java/com/codingapi/springboot/security/AutoConfiguration.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import com.codingapi.springboot.security.dto.request.LoginRequest;
66
import com.codingapi.springboot.security.filter.*;
77
import com.codingapi.springboot.security.jwt.Jwt;
8+
import com.codingapi.springboot.security.jwt.Token;
89
import com.codingapi.springboot.security.properties.SecurityJwtProperties;
10+
import jakarta.servlet.FilterChain;
911
import jakarta.servlet.http.HttpServletRequest;
1012
import jakarta.servlet.http.HttpServletResponse;
1113
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -67,17 +69,25 @@ public void preHandle(HttpServletRequest request, HttpServletResponse response,
6769
}
6870

6971
@Override
70-
public void postHandle(HttpServletRequest request, HttpServletResponse response, LoginRequest handler) {
72+
public void postHandle(HttpServletRequest request, HttpServletResponse response, LoginRequest handler, Token token) {
7173

7274
}
7375
};
7476
}
7577

78+
@Bean
79+
@ConditionalOnMissingBean
80+
public AuthenticationTokenFilter authenticationTokenFilter(){
81+
return (request, response, chain) -> {
82+
83+
};
84+
}
85+
7686

7787
@Bean
7888
@ConditionalOnMissingBean
7989
public SecurityFilterChain filterChain(HttpSecurity security, Jwt jwt,SecurityLoginHandler loginHandler,
80-
SecurityJwtProperties properties) throws Exception {
90+
SecurityJwtProperties properties,AuthenticationTokenFilter authenticationTokenFilter) throws Exception {
8191
//disable basic auth
8292
security.httpBasic().disable();
8393

@@ -86,7 +96,7 @@ public SecurityFilterChain filterChain(HttpSecurity security, Jwt jwt,SecurityLo
8696
if(properties.isDisableCsrf() ){
8797
security.csrf().disable();
8898
}
89-
security.apply(new HttpSecurityConfigurer(jwt,loginHandler,properties));
99+
security.apply(new HttpSecurityConfigurer(jwt,loginHandler,properties,authenticationTokenFilter));
90100
security
91101
.exceptionHandling()
92102
.authenticationEntryPoint(new MyUnAuthenticationEntryPoint())

springboot-starter-security-jwt/src/main/java/com/codingapi/springboot/security/configurer/HttpSecurityConfigurer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codingapi.springboot.security.configurer;
22

3+
import com.codingapi.springboot.security.filter.AuthenticationTokenFilter;
34
import com.codingapi.springboot.security.filter.MyAuthenticationFilter;
45
import com.codingapi.springboot.security.filter.MyLoginFilter;
56
import com.codingapi.springboot.security.filter.SecurityLoginHandler;
@@ -17,11 +18,12 @@ public class HttpSecurityConfigurer extends AbstractHttpConfigurer<HttpSecurityC
1718

1819
private final SecurityLoginHandler securityLoginHandler;
1920
private final SecurityJwtProperties securityJwtProperties;
21+
private final AuthenticationTokenFilter authenticationTokenFilter;
2022

2123
@Override
2224
public void configure(HttpSecurity security) throws Exception {
2325
AuthenticationManager manager = security.getSharedObject(AuthenticationManager.class);
2426
security.addFilter(new MyLoginFilter(manager, jwt,securityLoginHandler, securityJwtProperties));
25-
security.addFilter(new MyAuthenticationFilter(manager,securityJwtProperties,jwt));
27+
security.addFilter(new MyAuthenticationFilter(manager,securityJwtProperties,jwt,authenticationTokenFilter));
2628
}
2729
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.codingapi.springboot.security.filter;
2+
3+
import jakarta.servlet.FilterChain;
4+
import jakarta.servlet.http.HttpServletRequest;
5+
import jakarta.servlet.http.HttpServletResponse;
6+
7+
public interface AuthenticationTokenFilter {
8+
9+
void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain);
10+
}

springboot-starter-security-jwt/src/main/java/com/codingapi/springboot/security/filter/MyAuthenticationFilter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
1818
import org.springframework.util.AntPathMatcher;
1919
import org.springframework.util.StringUtils;
20-
import org.springframework.web.filter.OncePerRequestFilter;
2120

2221
import java.io.IOException;
2322
import java.nio.charset.StandardCharsets;
@@ -30,12 +29,15 @@ public class MyAuthenticationFilter extends BasicAuthenticationFilter {
3029
private final Jwt jwt;
3130

3231
private final SecurityJwtProperties securityJwtProperties;
32+
private final AuthenticationTokenFilter authenticationTokenFilter;
3333
private final AntPathMatcher antPathMatcher = new AntPathMatcher();
3434

35-
public MyAuthenticationFilter(AuthenticationManager manager, SecurityJwtProperties securityJwtProperties, Jwt jwt) {
35+
36+
public MyAuthenticationFilter(AuthenticationManager manager, SecurityJwtProperties securityJwtProperties, Jwt jwt,AuthenticationTokenFilter authenticationTokenFilter) {
3637
super(manager);
3738
this.jwt = jwt;
3839
this.securityJwtProperties = securityJwtProperties;
40+
this.authenticationTokenFilter = authenticationTokenFilter;
3941
}
4042

4143

@@ -65,6 +67,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
6567
}
6668

6769
SecurityContextHolder.getContext().setAuthentication(token.getAuthenticationToken());
70+
authenticationTokenFilter.doFilter(request, response, chain);
6871
}
6972
}
7073
chain.doFilter(request, response);

springboot-starter-security-jwt/src/main/java/com/codingapi/springboot/security/filter/MyLoginFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ protected void successfulAuthentication(HttpServletRequest request, HttpServletR
8484
String content = JSONObject.toJSONString(SingleResponse.of(login));
8585
IOUtils.write(content, response.getOutputStream(), StandardCharsets.UTF_8);
8686

87-
loginHandler.postHandle(request,response,loginRequest);
87+
loginHandler.postHandle(request,response,loginRequest,token);
8888
LoginRequestContext.getInstance().clean();
8989

9090
}
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.codingapi.springboot.security.filter;
22

33
import com.codingapi.springboot.security.dto.request.LoginRequest;
4+
import com.codingapi.springboot.security.jwt.Token;
45
import jakarta.servlet.http.HttpServletRequest;
56
import jakarta.servlet.http.HttpServletResponse;
67

78
public interface SecurityLoginHandler {
89

910
void preHandle(HttpServletRequest request, HttpServletResponse response, LoginRequest handler) throws Exception;
1011

11-
void postHandle(HttpServletRequest request, HttpServletResponse response, LoginRequest handler);
12+
void postHandle(HttpServletRequest request, HttpServletResponse response, LoginRequest handler, Token token);
1213

1314
}

0 commit comments

Comments
 (0)