목록전체 글 (29)
Day 개발 기록
먼저, member 패키지를 만들고 Member.java 와 MemberRepository 를 만든다. Member.java @Getter @NoArgsConstructor @AllArgsConstructor @Builder @Entity public class Member implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String email; private String password; @ElementCollection(fetch = FetchType.EAGER) @Builder.Default private List roles = new ArrayList(); ..
IDE : IntelliJ https://start.spring.io/ 에서 프로젝트를 다음과 같이 생성해준다. 스프링 버전은 2.7.8로 해주었다. build.gradle 에 dependancy는 다음과 같이 설정해준다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2:1.4.197' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnl..
😄 세션기반 인증 실제 인증정보는 서버에 저장된다. 사용자가 로그인하면 해당 인증정보를 서버의 세션저장소에 저장한다. 이때, 고유 세션값인 SessionId를 발급해줘서 이를 쿠키형식으로 저장한다. Session ID는 브라우저 단위로 저장되고, 브라우저 종료 시 제거된다. 장점 세션은 쿠키헤더에 세션ID만 넣어보내면 되므로 트래픽도 적다. 서버에서 인증정보를 관리하므로 보안 측면에서 유리하다. (탈취당하더라도, 세션을 무효처리하면 됨) 단점 한 서비스가 아닌 여러서비스에서 요청을 처리할때 문제가된다. 브라우저별로 SessionId가 발급되므로 세션 불일치 문제를 겪게되기때문이다. 해결방안 Sticky Session, Session Clustering, 세션 스토리지 외부 분리 😀 JWT 기반 인증 인증..
1. public void secuTest() 에서 @ResponseBody를 추가한다. public @ResponseBody void secuTest() SpringBoot에서 ViewResolver 에 대한 설정을 해줘야 하는데 하지 않아 생기는 오류이다. 2. @Conroller 가 아니라 @RestController를 사용한다. @RestController는 자체적으로 @Controller 및 @ResponseBody로 메타 주석이 추가 된 구성된 주석으로, 모든 메서드가 @ResponseBody 주석을 상속하여 응답 본문에 HTML 템플릿을 반환한다. https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-..
1. 스프링 시큐리티를 사용하여 회원가입과 로그인을 구현하려 할때, userRepository.save(user) 까지 하면 회원가입은 잘 된다. 그러나 이렇게 하면 패스워드가 암호화가 되지않아 시큐리티 로그인이 되지않는다. 따라서 BCryptPasswordEncoder 를 사용하여야 한다. 2. +BCryptPasswordEncoder 란 ? https://kimvampa.tistory.com/129 3. 구현 Controller에 Autowired를 이용해 BCryptPasswordEncoder 를 의존성 주입한다. raw password를 get하여 BCryptPasswordEncoder 의 encode를 통해 암호화한 후 다시 set해준다.