Skip to main content

Command Palette

Search for a command to run...

2024.02.15 RoomRoomBnB 팀 프로젝트

Published
2 min readView as Markdown
T

안녕하세요! Web개발을 공부하고 있는 윤종일 입니다. 현재는 Java 백엔드 개발을 깊게 파고들고 있어요! 제 궁극적인 목표는 풀스택 개발자가 되는 것입니다. 프론트엔드와 백엔드 모두를 자유롭게 넘나들며, 사용자에게 가치를 전달할 수 있는 완성도 높은 애플리케이션을 만드는 것이 목표입니다.

RoomRoomBnB 팀 프로젝트

💡 오늘의 학습 키워드

#과제발표

✔️ 오늘의 Todo List

  •  팀 과제 발표하기

✏️오늘의 기록

  1. 그동안 팀 프로젝트를 한다는 핑계로 TIL을 쓰지 않았다. 다시 열심히 써야겠다. 일기 형식 말고!!!!

  2. 팀 과제 발표를 내가 했다. 별로 잘하진 않은 것 같다.

  3. 나는 회원가입/로그인 기능을 구현했는데 로그아웃 기능은 만들지 않았다. JWT 토큰 방식으로 로그인을 구현했는데 백엔드에서 로그아웃을 구현할 거면 세션 방식을 사용하는 게 좋다는 결론을 내렸기 때문이다.(로그아웃 기능을 구현하면 JWT의 장점이 별로 없을 것 같다.)

팀 프로젝트 깃허브 페이지 : https://github.com/RoomRoomBnB/roombnb

GitHub - RoomRoomBnB/roombnb

Contribute to RoomRoomBnB/roombnb development by creating an account on GitHub.

github.com

팀 프로젝트 후기

@Configuration
@EnableWebSecurity
@AllArgsConstructor
public class SecurityConfig {

    private final AuthenticationConfiguration authenticationConfiguration;
    private final JwtUtil jwtUtil;

    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        // BCryptPasswordEncoder를 Bean으로 등록하여 비밀번호 암호화에 사용
        return new BCryptPasswordEncoder();
    }

    //AuthenticationManager Bean 등록
    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration configuration)
        throws Exception {
        // Spring Security의 AuthenticationManager를 사용자 정의 설정으로 Bean으로 등록
        return configuration.getAuthenticationManager();
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .csrf(auth -> auth.disable()) // CSRF 보호 기능을 비활성화
            .formLogin(auth -> auth.disable()) // 폼 기반 로그인 비활성화
            .httpBasic(auth -> auth.disable()) // HTTP Basic 인증 비활성화
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/test").authenticated() // "/test" 경로는 인증된 사용자만 접근 가능
                // 지정된 경로들은 누구나 접근 가능하도록 설정
                .requestMatchers("/login", "/", "/v3/api-docs/**", "/api/users/signup",
                    "/swagger-ui/**", "/swagger-ui.html").permitAll()
                .anyRequest().authenticated()) // 나머지 요청들은 모두 인증 필요
            .addFilterBefore(new JwtFilter(jwtUtil), LoginFilter.class) // JwtFilter를 LoginFilter 전에 추가
            .addFilterBefore(
                new LoginFilter(authenticationManager(authenticationConfiguration), jwtUtil),
                UsernamePasswordAuthenticationFilter.class) // LoginFilter를 UsernamePasswordAuthenticationFilter 전에 추가
            .sessionManagement(
                session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)); // 세션을 사용하지 않고 STATELESS로 설정

        return http.build(); // SecurityFilterChain 구성을 완료하고 반환
    }

나를 힘들게 했던 시큐리티 설정..

물론 계속 공부 하겠지만 이제는 마음이 그나마 편해졌다. 왜냐하면 그래도 이 정도 기본적인 코드는 이해는 했기 때문이다.

로그인/회원가입 기능이 걸려서 다행이다.

CRUD를 다뤘으면 재밌었겠지만 저번 개인 프로젝트 때도 회원가입/로그인 기능 구현이 가장 어려웠었다.

한번 더 구현하게 돼서 운 좋게도 이해를 더 잘 할 수 있게 됐다.

1 views

More from this blog

서브넷 이해하기

서브넷 IPv4 IPv4로 보자면 데이터 전송 방식은 유니캐스트 멀티캐스트 브로드 캐스트다. 32bit 숫자로 구성되어 있다. 일반적으로 4개의 10진수로 표현된다. 데이터 전송 방식 데이터 전송 방식설명 유니캐스트한 대의 컴퓨터가 다른 한 대의 컴퓨터에게 데이터를 보내는 방식 멀티캐스트한 대의 컴ㅂ퓨터가 특정 그룹에 속한 여러 컴퓨터에게 ㄷ이터를 보내는 방식 브로드캐스트한 대의 컴퓨터가 같은 네트워크에 있는 모든 컴퓨터...

Aug 5, 20242 min read3
서브넷 이해하기

네트워크 계층

네트워크 계층 네트워크는 원하는 정보를 원하는 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라이다. OSI 7계층 (지겹지만 반복) OSI 7계층은 국제 표준화 기구인 ISO(International Standardization Organization)에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호 연결 모델이다. 각 계층은 서로 독립적으로 구성되어 있고, 각 계층은 하위 계층의 기...

Jul 29, 20243 min read3
네트워크 계층

메모리 단편화

메모리 단편화 메모리 단편화란 분할된 주기억장치에 프로세스를 할당, 반납 과정에서 사용되지 못하고 낭비되는 기억장치가 발생하는 현상이다. 유형으로는 내부 단편화와 외부 단편화가 있다. 내부 단편화 내부 단편화 개념 내부 단편화는 분할된 공간에 프로세스를 적재한 후 남은 공간이다. 내부 단편화는 고정 분할 할당 방식 또는 페이징 기법 사용 시 발생하는 메모리 단편화다. 해결 방안설명 슬랩 할당자 (Slab Allocator)페...

Jul 20, 20241 min read

2024.07.13 애플리케이션 테스트 수행

애플리케이션 테스트 수행 IDE 도구 개념 IDE(Integrated Development Environment) 도구는 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어이다. 기존에는 컴파일러, 텍스트 편집기, 디버거를 따로 사용했으나 통합 개발환경을 통해 하나로 묶은 대화형 인터페이스를 제공한다. IDE 도구의 기능 IDE 도구는 다양한 기능을 통합한 형태...

Jul 12, 20242 min read2
2024.07.13 애플리케이션 테스트 수행
J

Java 백엔드 및 풀스택 개발

111 posts

안녕하세요! Web개발을 공부하고 있는 윤종일 입니다. 현재는 Java 백엔드 개발을 깊게 파고들고 있어요! 제 궁극적인 목표는 풀스택 개발자가 되는 것입니다. 프론트엔드와 백엔드 모두를 자유롭게 넘나들며, 사용자에게 가치를 전달할 수 있는 완성도 높은 애플리케이션을 만드는 것이 목표입니다.

E-Mail : ji4971@naver.com