diff --git a/src/main/front/vite.config.js b/src/main/front/vite.config.js index 69830dd..a1b3397 100644 --- a/src/main/front/vite.config.js +++ b/src/main/front/vite.config.js @@ -13,14 +13,14 @@ export default defineConfig({ host: 'bsm-lab.dev', proxy: { '/app-api/': { - target: 'https://bsm-lab.dev:9443/app-api/', + target: 'https://bsm-lab.dev:17443/app-api/', changeOrigin: true, rewrite: (path) => path.replace(/^\/app-api/, ''), secure: false, ws: true, }, '/public-api/': { - target: 'https://bsm-lab.dev:9443/public-api/', + target: 'https://bsm-lab.dev:17443/public-api/', changeOrigin: true, rewrite: (path) => path.replace(/^\/public-api/, ''), secure: false, diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/ForwardController.java b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/ForwardController.java new file mode 100644 index 0000000..5ab16fa --- /dev/null +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/ForwardController.java @@ -0,0 +1,20 @@ +package com.bsmlab.dfx.dfxconsole.framework.config; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequiredArgsConstructor +@Slf4j +public class ForwardController { + /** + * Spring 에서 클라이언트 라우터 경로를 모두 index.html로 포워딩 + */ +// @RequestMapping(value = { "/", "/{x:[\\w\\-]+}", "/{x:^(?!api|public-api|app-api).*$}/**" }) + @RequestMapping(value = {"/login.html", "main.html"}) + public String forward() { + return "forward:/index.html"; + } +} diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/PublicApiController.java b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/PublicApiController.java index 52acd8c..6ef58b0 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/PublicApiController.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/PublicApiController.java @@ -58,4 +58,5 @@ public class PublicApiController { } return ResponseEntity.ok(resultMap); } + } diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/SecurityConfig.java b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/SecurityConfig.java index b095bd5..2d9ad20 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/SecurityConfig.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/config/SecurityConfig.java @@ -29,24 +29,17 @@ public class SecurityConfig { httpSecurity .csrf(AbstractHttpConfigurer::disable) // REST API 를 제공하는 서비스이므로 Cross Site Request Forgery disable .authorizeHttpRequests(authorize -> authorize - .requestMatchers("/app-api/**").hasRole("USER") - .requestMatchers("/index.html").hasRole("USER") + .requestMatchers("/app-api/**").authenticated() .anyRequest().permitAll() ) - .formLogin(form -> form - .loginPage("/login.html") - .loginProcessingUrl("/public-api/loginProcess") - .defaultSuccessUrl("/index.html") - .permitAll() - ) + .addFilterAt(this.jsonUsernamePasswordAuthenticationFilter(this.authenticationManager(authenticationConfiguration)), UsernamePasswordAuthenticationFilter.class) + .sessionManagement(session -> session.maximumSessions(1).maxSessionsPreventsLogin(false)) .logout(logout -> logout .logoutUrl("/public-api/logoutProcess") .logoutSuccessHandler(this.logoutSuccessHandler()) .invalidateHttpSession(true) .deleteCookies("JSESSIONID") ) - .addFilterAt(this.jsonUsernamePasswordAuthenticationFilter(this.authenticationManager(authenticationConfiguration)), UsernamePasswordAuthenticationFilter.class) - .sessionManagement(session -> session.maximumSessions(1).maxSessionsPreventsLogin(false)); ; return httpSecurity.build(); } diff --git a/src/main/resources/public/error/404.html b/src/main/resources/public/error/404.html new file mode 100644 index 0000000..b44d4c6 --- /dev/null +++ b/src/main/resources/public/error/404.html @@ -0,0 +1,11 @@ + + +
+ +요청하신 페이지가 존재하지 않습니다.
+ +