diff --git a/egovframe-template-simple-react-contribution/src/pages/login/EgovLoginContent.jsx b/egovframe-template-simple-react-contribution/src/pages/login/EgovLoginContent.jsx index 2b1698e..174d84c 100644 --- a/egovframe-template-simple-react-contribution/src/pages/login/EgovLoginContent.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/login/EgovLoginContent.jsx @@ -18,7 +18,7 @@ function EgovLoginContent(props) { const location = useLocation(); console.log("EgovLoginContent [location] : ", location); - const [userInfo, setUserInfo] = useState({ id: '', password: 'default', userSe: 'USR' }); + const [userInfo, setUserInfo] = useState({ username: '', password: 'default', userSe: 'USR' }); // eslint-disable-next-line no-unused-vars const [loginVO, setLoginVO] = useState({}); @@ -55,14 +55,14 @@ function EgovLoginContent(props) { useEffect(() => { let data = getLocalItem(KEY_ID); if (data !== null) { - setUserInfo({ id: data, password: 'default', userSe: 'USR' }); + setUserInfo({ username: data, password: 'default', userSe: 'USR' }); } }, []); const submitFormHandler = (e) => { console.log("EgovLoginContent submitFormHandler()"); - const loginUrl = "/auth/login-jwt" + const loginUrl = "/auth/login" const requestOptions = { method: "POST", headers: { @@ -111,8 +111,8 @@ function EgovLoginContent(props) {
로그인 - setUserInfo({ ...userInfo, id: e.target.value })} /> + setUserInfo({ ...userInfo, username: e.target.value })} /> setUserInfo({ ...userInfo, password: e.target.value })} /> diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/EgovLoginApiController.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/EgovLoginApiController.java index 1ffa721..7f45f97 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/EgovLoginApiController.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/EgovLoginApiController.java @@ -66,8 +66,8 @@ public class EgovLoginApiController extends BaseController { @Operation( - summary = "JWT 로그인", - description = "JWT 로그인 처리", + summary = "회원가입", + description = "회원가입", tags = {"EgovLoginApiController"} ) @ApiResponses(value = { diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java index f19c387..b474631 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java @@ -14,10 +14,12 @@ import org.springframework.security.config.annotation.web.configurers.AbstractHt import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.DefaultRedirectStrategy; import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.savedrequest.HttpSessionRequestCache; import org.springframework.security.web.savedrequest.SavedRequest; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; @@ -100,22 +102,28 @@ public class SecurityConfig { } @Bean protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception { - - return http.csrf(AbstractHttpConfigurer::disable) - .authorizeHttpRequests(authorize -> authorize - .antMatchers(AUTH_WHITELIST).permitAll() - .antMatchers(HttpMethod.GET,AUTH_GET_WHITELIST).permitAll() - .anyRequest().authenticated() - ).sessionManagement((sessionManagement) -> - sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS) - ) - .cors().and() - .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class) - .exceptionHandling(exceptionHandlingConfigurer -> - exceptionHandlingConfigurer - .authenticationEntryPoint(new JwtAuthenticationEntryPoint()) - ) - .build(); + http.csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests(authorize -> authorize + .antMatchers(AUTH_WHITELIST).permitAll() + .antMatchers(HttpMethod.GET,AUTH_GET_WHITELIST).permitAll() + .anyRequest().authenticated() + ).sessionManagement((sessionManagement) -> + sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS) + ) + .cors().and() + .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class) + .exceptionHandling(exceptionHandlingConfigurer -> + exceptionHandlingConfigurer + .authenticationEntryPoint(new JwtAuthenticationEntryPoint()) + ) + .cors().and() + .formLogin().loginProcessingUrl("/auth/login") + .successHandler(loginSuccessHandler()) + .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")) + .logoutSuccessUrl("/") + .invalidateHttpSession(true) + .deleteCookies("JSESSIONID"); + return http.build(); } @Bean @@ -130,4 +138,5 @@ public class SecurityConfig { }; } + } \ No newline at end of file