디자인 패턴, LGTM

mil nil·2022년 12월 23일
0

TIL (Today I Learned)

목록 보기
38/74

오늘 배운 것

디자인 패턴

  • 모든 패턴을 외운다기 보다는 필요한 패턴이 생길 때 찾아서 적용시키면 된다.
  • 지금 사용할만한 것들: 싱글턴, 브리지, 프록시 등

Spring 심화주차

  • CSRF란? 사이트 간 위조 요청, Cross-site request forgery
    -> 브라우저에 저장된 쿠키 세션 정보를 활용한 공격
    -> html에서 CSRF 토큰을 넘겨주어야 요청을 수신 가능
    public WebSecurityCustomizer webSecurityCustomizer() {
        // h2-console 사용 및 resources 접근 허용 설정
        return (web) -> web.ignoring()
                .requestMatchers(PathRequest.toH2Console())
                .requestMatchers(PathRequest.toStaticResources().atCommonLocations());
    }
  • 접근을 허용할 것들에 대해 선언해준다.
  • webSecurityCustomizer()가 securityFilterChain(HttpSecurity http)보다 먼저 실행되게 한다.
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        // CSRF 설정
        http.csrf().disable();	//이번에 csrf 인증 방식은 적용하지 않음
				http.authorizeRequests()//스프링부트3.0이상에서는 authorizeHttpRequest()를 사용해야 한다.
                //아래와 같이 인증이 없이 허용시킬 수도 있음 // 사이 값은 예시
                //.antMatchers("/h2-console/**").permitAll()
                //.antMatchers("/css/**").permitAll()
                //.antMatchers("/js/**").permitAll()
                //.antMatchers("/images/**").permitAll()
                //.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
                .anyRequest().authenticated();
  • 스프링부트3.0이상에서는 authorizeRequest() 대신 authorizeHttpRequest()를 사용해야 한다.
  • //로 나타낸 부분은 인증을 허용하는 다른 방법의 예시이다.
http.formLogin();

formlogin() 호출 시 기본 형태의 로그인 창을 보여주며 기본 아이디는 user로 고정되어 있고 아래와 같은 password를 콘솔창을 통해 확인할 수 있다.

Using generated security password: e0823dd2-5c67-4c35-83a6-169efc58feb3
  • 로그인에 성공하면 다음과 같은 세션을 받아오게 되고 이 세션이 존재하면 로그인 되어있는 것으로 처리된다.

? 궁금증: 여기서 항상 index.html 경로를 입력해주지 않았는데도 왜 index.html로 연결되는지 이유를 모르겠다. 디폴트 값인 것 같긴 하지만 이유가 궁금하다.

  • 컴스텀한 로그인 페이지로 연결하는 방법
http.formLogin().loginPage("/api/user/login-page").permitAll();

LGTM이란

병두님이 내 코드를 보고 LGTM이라고 하셨는데 무슨 뜻인지 몰라 찾아보게 되었다.

구글에서는 코드베이스에 커밋하기 전에 코드를 함께 리뷰한다. 이 단계를 프리커밋 리뷰(커밋 직전 리뷰)라고 한다. 코드 리뷰의 최종 목표는 다른 엔지니어로부터 해당 변경을 적용해도 된다는 합의를 이끌어내는 것이다. 합의한 엔지니어는 ‘좋아 보임(looks good to me)’이라는 뜻의 LGTM이라는 태그를 달아 의사를 표현한다. 구글에서는 이 LGTM이 변경을 커밋하는 데 요구되는 필수 항목이라고 한다.

어쨌든 좋은 의미여서 감사하고 이번을 통해서 구글의 코드리뷰 관련 자료도 찾아보게 되었다. 코드로 협업하는 것이 아직 많이 어색하지만 이러한 체계가 필요하다는 것을 알게 되어서 좋은 경험이 된 것 같다.

참조:LGTM이 뭐지? : 구글의 코드 리뷰 & 코드 리뷰 유형

profile
자바 배우는 사람

0개의 댓글