Content

Board ID 1238
Writer 허진경 (나자바바)
Write Date 2023-11-20 22:37:57
Subject 스프링 부트 + 시큐리티 요약
Content 1. 의존성 주입 spring-boot-starter-security thymeleaf-extras-springsecurity6 <-- sec 네임스페이스 사용 2. SecurityConfig 파일 작성 SecurityFilterChain 빈을 정의해야 함 로그인/로그아웃 페이지 설정(인증페이지 설정) 필터 매핑 설정(인가 설정) 3. UserDetailsService 인터페이스 구현 인증 정보를 조회(DB) <-- 데이터베이스에서 사용자아이디, 비밀번호, 권한 정보를 조회 정보(username, password, authorities)를 User 클래스에 담아서 반환 4. 타임리프 코드 작성 <html xmlns:th="..." xmlsn:sec="http://www.thymeleaf.org/extras/spring-security"> <div sec:authorize="isAnonymous()">인증 안됨</div> <div sec:authorize="isAuthenticated()">인증 됨</div> <div sec:authentication="name">사용자이름</div> <div sec:authentication="principal.authorities">권한</div> 5. 스프링시큐리티의 User 클래스를 상속한 클래스 작성 반드시 생성자를 추가해야 함 id, pw, auth외의 정보를 시큐리티 세션에 담아야 할 경우 super(username, password, authorities); this.userEmail = userEmail; * 클래스는 UserDetailsService의 메서드가 User 객체를 반환해야 할 경우 6. 정보 저장하는 컨트롤러 수정 비밀번호를 저장하는 열의 크기는 70바이트 이상 비밀번호를 PasswordEncoder를 이용해서 인코딩 PasswordEncoder pwEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); String encodedPw = pwEncoder.encode(member.getPassword()); member.setPassword(encodedPw); 7. 패스워드 인코더 빈 추가 @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); }