Joshua게시판(SSR)-3-시큐리티 세팅 및 View 연결

jaegeunsong97·2023년 8월 13일
0

SSR 기반 JoshuaBlog

목록 보기
3/23

깃허브

Spring Security로 철벽당함

IOC 컨테이너에 등록하기

다음에는 SecurityFilterChain 추가하기

	@Bean
     SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
          http.csrf().disable(); // CSRF 해제: 모든 요청 다 받을 수 있음
          http.formLogin()
                    .loginPage("/loginForm")
                    .loginProcessingUrl("/login")
                    .successHandler((request, response, authentication) -> {
                         log.debug("디버그 : 로그인 성공");

                    }) // 성공시
                    .failureHandler((request, response, exception) -> {
                         log.debug("디버그 : 로그인 실패 : " + exception.getMessage());

                    }); // 실패시
          http.authorizeRequests(
                    authorize -> authorize.antMatchers("/auth/**").authenticated()
                              .anyRequest().permitAll());
          return http.build();
     }

실행 후 다시 /auth/** 로시작하는 아무거나 입력시 전부 login으로 돌아감

화면 가져오기(WEB-INF 파일만 복붙)

https://github.com/codingspecialist/Springboot-There-Blog-RealTime

해당 폴더는 다이렉트로 접근이 불가능 -> 따라서 controller를 타고 가야만 함. -> 강제 MVC 패턴

application-dev 보면 prefix가 /WEB-INF/views/로 되어있음. 그러면 당연하게 webapp 은 어디로갔냐??

webapp은 디폴트 경로임

implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'

이게 들어가면 webapp이 웹 서버로 디폴트됨

suffix(viewResolver)로 controller가 찾기 편하게 세팅하는 것, 왜냐하면 없으면 너무 힘듬(dispatcher servlet할때 개고생한 것을 떠올리면 됨)

다음은 css, images 등록

그리고 .jsp 파일에는 footer, header가 전부 존재

따라서 위 아래에는 그림이 들어가고 가운데에 우리가 작업을 하면 되는 것

  • 컨트롤러로 확인
package coffee.pastry.joshuablog.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/hello")
@Controller
public class HelloController {

     // user
     @GetMapping("/joinForm")
     public String joinForm() {
          return "user/joinForm";
     }

     @GetMapping("/loginForm")
     public String loginForm() {
          return "user/loginForm";
     }

     @GetMapping("/user/updateForm")
     public String userUpdateForm() {
          return "user/updateForm";
     }

     @GetMapping("/user/profileUpdateForm")
     public String profileUpdateForm() {
          return "user/profileUpdateForm";
     }

     // board
     @GetMapping({ "/", "/board" })
     public String main() {
          return "board/main";
     }

     @GetMapping("/board/{id}")
     public String boardDetail() {
          return "board/detail";
     }

     @GetMapping("/board/saveForm")
     public String boardSaveForm() {
          return "board/saveForm";
     }

     @GetMapping("/board/{id}/updateForm")
     public String boardUpdateForm() {
          return "board/updateForm";
     }
}

profile
현재 블로그 : https://jasonsong97.tistory.com/

0개의 댓글