44import com .codingapi .springboot .security .controller .VersionController ;
55import com .codingapi .springboot .security .dto .request .LoginRequest ;
66import com .codingapi .springboot .security .filter .*;
7- import com .codingapi .springboot .security .jwt . Jwt ;
8- import com .codingapi .springboot .security .jwt . Token ;
9- import com .codingapi .springboot .security .properties .SecurityJwtProperties ;
7+ import com .codingapi .springboot .security .gateway . Token ;
8+ import com .codingapi .springboot .security .gateway . TokenGateway ;
9+ import com .codingapi .springboot .security .properties .CodingApiSecurityProperties ;
1010import jakarta .servlet .http .HttpServletRequest ;
1111import jakarta .servlet .http .HttpServletResponse ;
1212import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
1616import org .springframework .core .env .Environment ;
1717import org .springframework .security .authentication .AuthenticationProvider ;
1818import org .springframework .security .authentication .dao .DaoAuthenticationProvider ;
19+ import org .springframework .security .config .Customizer ;
1920import org .springframework .security .config .annotation .web .builders .HttpSecurity ;
2021import org .springframework .security .config .annotation .web .configuration .EnableWebSecurity ;
22+ import org .springframework .security .config .annotation .web .configurers .AbstractHttpConfigurer ;
2123import org .springframework .security .core .userdetails .User ;
2224import org .springframework .security .core .userdetails .UserDetails ;
2325import org .springframework .security .core .userdetails .UserDetailsService ;
@@ -60,23 +62,23 @@ public PasswordEncoder passwordEncoder() {
6062
6163 @ Bean
6264 @ ConditionalOnMissingBean
63- public SecurityLoginHandler securityLoginHandler (){
64- return new SecurityLoginHandler () {
65- @ Override
66- public void preHandle (HttpServletRequest request , HttpServletResponse response , LoginRequest handler ) throws Exception {
65+ public SecurityLoginHandler securityLoginHandler () {
66+ return new SecurityLoginHandler () {
67+ @ Override
68+ public void preHandle (HttpServletRequest request , HttpServletResponse response , LoginRequest handler ) throws Exception {
6769
68- }
70+ }
6971
70- @ Override
71- public void postHandle (HttpServletRequest request , HttpServletResponse response , LoginRequest handler , Token token ) {
72+ @ Override
73+ public void postHandle (HttpServletRequest request , HttpServletResponse response , LoginRequest handler , Token token ) {
7274
73- }
74- };
75+ }
76+ };
7577 }
7678
7779 @ Bean
7880 @ ConditionalOnMissingBean
79- public AuthenticationTokenFilter authenticationTokenFilter (){
81+ public AuthenticationTokenFilter authenticationTokenFilter () {
8082 return (request , response , chain ) -> {
8183
8284 };
@@ -85,22 +87,29 @@ public AuthenticationTokenFilter authenticationTokenFilter(){
8587
8688 @ Bean
8789 @ ConditionalOnMissingBean
88- public SecurityFilterChain filterChain (HttpSecurity security , Jwt jwt , SecurityLoginHandler loginHandler ,
89- SecurityJwtProperties properties ,AuthenticationTokenFilter authenticationTokenFilter ) throws Exception {
90+ public SecurityFilterChain filterChain (HttpSecurity security , TokenGateway tokenGateway , SecurityLoginHandler loginHandler ,
91+ CodingApiSecurityProperties properties , AuthenticationTokenFilter authenticationTokenFilter ) throws Exception {
9092 //disable basic auth
91- security .httpBasic (). disable ( );
93+ security .httpBasic (AbstractHttpConfigurer :: disable );
9294
9395 //before add addCorsMappings to enable cors.
94- security .cors ();
95- if (properties .isDisableCsrf () ){
96- security .csrf ().disable ();
97- }
98- security .apply (new HttpSecurityConfigurer (jwt ,loginHandler ,properties ,authenticationTokenFilter ));
99- security
100- .exceptionHandling ()
101- .authenticationEntryPoint (new MyUnAuthenticationEntryPoint ())
102- .accessDeniedHandler (new MyAccessDeniedHandler ())
103- .and ()
96+ security .cors (httpSecurityCorsConfigurer -> {
97+ if (properties .isDisableCors ()) {
98+ httpSecurityCorsConfigurer .disable ();
99+ }
100+ });
101+
102+ security .csrf (httpSecurityCsrfConfigurer -> {
103+ if (properties .isDisableCsrf ()) {
104+ httpSecurityCsrfConfigurer .disable ();
105+ }
106+ });
107+
108+
109+ security .with (new HttpSecurityConfigurer (tokenGateway , loginHandler , properties , authenticationTokenFilter ), Customizer .withDefaults ());
110+ security .exceptionHandling (httpSecurityExceptionHandlingConfigurer ->
111+ httpSecurityExceptionHandlingConfigurer .authenticationEntryPoint (new MyUnAuthenticationEntryPoint ())
112+ .accessDeniedHandler (new MyAccessDeniedHandler ()))
104113 .authorizeHttpRequests (
105114 registry -> {
106115 registry .requestMatchers (properties .getIgnoreUrls ()).permitAll ()
@@ -109,15 +118,13 @@ public SecurityFilterChain filterChain(HttpSecurity security, Jwt jwt,SecurityLo
109118 }
110119 )
111120 //default login url :/login
112- .formLogin ()
113- .loginProcessingUrl (properties .getLoginProcessingUrl ())
114- .permitAll ()
115- .and ()
121+ .formLogin (httpSecurityFormLoginConfigurer ->
122+ httpSecurityFormLoginConfigurer .loginPage (properties .getLoginProcessingUrl ())
123+ )
116124 //default logout url :/logout
117- .logout ()
118- .logoutUrl (properties .getLogoutUrl ())
119- .addLogoutHandler (new MyLogoutHandler ())
120- .logoutSuccessHandler (new MyLogoutSuccessHandler ());
125+ .logout (httpSecurityLogoutConfigurer -> httpSecurityLogoutConfigurer .logoutUrl (properties .getLogoutUrl ())
126+ .addLogoutHandler (new MyLogoutHandler ())
127+ .logoutSuccessHandler (new MyLogoutSuccessHandler ()));
121128
122129 return security .build ();
123130 }
@@ -135,18 +142,11 @@ public AuthenticationProvider authenticationProvider(UserDetailsService userDeta
135142
136143
137144 @ Bean
138- @ ConditionalOnMissingBean
139- public Jwt jwt (SecurityJwtProperties properties ) {
140- return new Jwt (properties .getJwtSecretKey (), properties .getJwtTime (), properties .getJwtRestTime ());
141- }
142-
143-
144- @ Bean
145- public WebMvcConfigurer corsConfigurer (SecurityJwtProperties securityJwtProperties ) {
145+ public WebMvcConfigurer corsConfigurer (CodingApiSecurityProperties securityJwtProperties ) {
146146 return new WebMvcConfigurer () {
147147 @ Override
148148 public void addCorsMappings (CorsRegistry registry ) {
149- if (securityJwtProperties .isDisableCors ()) {
149+ if (securityJwtProperties .isDisableCors ()) {
150150 registry .addMapping ("/**" )
151151 .allowedHeaders ("*" )
152152 .allowedMethods ("*" )
@@ -163,14 +163,14 @@ public void addCorsMappings(CorsRegistry registry) {
163163
164164 @ Bean
165165 @ ConfigurationProperties (prefix = "codingapi.security" )
166- public SecurityJwtProperties securityJwtProperties () {
167- return new SecurityJwtProperties ();
166+ public CodingApiSecurityProperties codingApiSecurityProperties () {
167+ return new CodingApiSecurityProperties ();
168168 }
169169
170170
171171 @ Bean
172172 @ ConditionalOnMissingBean
173- public VersionController versionController (Environment environment ){
173+ public VersionController versionController (Environment environment ) {
174174 return new VersionController (environment );
175175 }
176176
0 commit comments