IT수업/SPRINGBOOT 16

IT 수업 23주차 (180) SPRINGSECURITY _ Remember Me

● Remember-Me  스프링 시큐리티의 Remember-Me 기능은 기본적으로 사용자가 로그인했을 때의 특정한 토큰 데이터를 2주간 유지되도록 쿠키를 생성한다.브라우저에 전송된 쿠키를 이용해서 로그인 정보가 필요하면 저장된 토큰을 이용해서 다시 정보를 사용할 수 있다.   SecurityConfig.java에서 remember me와 빈을 작성해준다.rememberMe에서 tokenRepository는 빈의 tokenRepository의 정보가 들어가게 된다. 토큰 관리를 위한 repository 구현체를 빈으로 추가하는데 직접 구현할 필요가 없이 dataSource만 설정해주면 된다.   여기서 JdbcTokenRepositoryImpl을 Ctrl+마우스 클릭해서 들어가면 create table이..

IT수업/SPRINGBOOT 2024.05.27

IT 수업 23주차 (179) SPRINGSECURITY _ Handler

- 로그인, 로그아웃 핸들러 만들기- 로그인SecurityConfig로 가서 이전에 만들었던 로그인과 로그아웃 코드에 핸들러를 추가해준다.   config의 auth 패키지 안에 loginHandler 패키지를 만들고 그 안에 CustomLoginSuccessHandler와 CustomAuthenticationFailureHandler를 만들어 준다. AuthenticationSuccessHandler는 로그인 성공 후 특정 동작을 제어하기 위해 구현하는 인터페이스이다. 커서를 올린 후 implement method를 클릭해 첫번째 것을 클릭해준다. 그리고 안의 내용을 작성해준다.역할에 따라 매핑시키는 페이지를 다르게 설정해준다.    이번에는 CustomAuthenticationFailureHandle..

IT수업/SPRINGBOOT 2024.05.27

IT 수업 23주차 (178) SPRINGSECURITY _ 회원가입 2

한번에 보기 쉬운 큰 틀을 가져와봤다.    PrincipalDetails service는 데이터베이스에 있는 값을 꺼내와서 PrincipalDetails로 전달하는 역할을 한다.Principal은 자바의 표준 시큐리티 기술로, 시스템을 사용하려고 하는 사용자, 디바이스 혹은 시스템을 통칭하며, 로그인이 된 상태라면 계정 정보를 담고 있다.  config 패키지 안에 auth 패키지를 만들고 그 안에 PrincipalDetails 클래스를 만들어 준다. 빨간 줄에 커서 가져다 대면 나오는 implement method를 선택해 만들어 준다. 그리고 @AllArgsConstructor와 @NoArgsConstructor, @Data 어노테이션을 추가해주고 UserDto를 받아온다.그리고 각종 return ..

IT수업/SPRINGBOOT 2024.05.27

IT 수업 23주차 (177) SPRINGSECURITY_회원가입

JPA 이용해서 DB연결을 해볼 것이다.  resources의 templates 디렉토리에 join.html 파일을 만들어준다. 그리고 UserController로 가서 join 페이지를 매핑시켜준다.  domain패키지를 만들고 그 안에 dto 패키지를 만들고 그 안에 UserDto 클래스를 만들어준다.  다시 UserController로 가서 join_post에 UserDto를 추가해준다.  SecurityConfig로 가서 permitAll()에 "/join"와 "/login"을 추가해준다.  그러면 localhost:8080/join이 작동된다.  이번에는 domain 패키지 안에 entity, repository, service 패키지를 만들어준다.(여기서부터는 앞에서 작성한 코드를 들고오는데 ..

IT수업/SPRINGBOOT 2024.05.27

IT 수업 23주차 (176) SPRINGSECURITY

(2.x.x 버전때는 sts와 비슷하지만 3.x.x 버전으로 올라오면서 바뀌게 됐다. -  상속,의존관계를 두지 않고 bean을 사용하려  함) start.spring.io로 들어가서 버전은 제일 낮은 3.2.6 으로 맞춰주고 SpringSecurity, SpringWeb, Lomgok, Tymeleaf를 받아 generate 해준다. 받은 파일의 압축을 풀어 원하는 파일에 넣은 뒤 cmd의 idea로 실행시켜준다. setting에 들어가서 gradle을 입력해 build를 맞춰준다. 그리고 plugin에 들어가 lombok을 다운받아준다.  그리고 프로젝트의 setting을 들어가서 project버전과 SDKs의 버전을 21로 맞춰준다.  모두 설정한 뒤 AppApplication을 그냥 실행시키면 콘..

IT수업/SPRINGBOOT 2024.05.27

IT 수업 22주차 (156) Thymeleaf

● thymeleaf : 타임리프타임리프는 JSP, Freemarker와 같은 템플릿 엔진의 일종으로 백엔드 서버에서 HTML 태그를 기반으로하여 th:속성을 이용하여 동적인 View를 제공, 렌더링 하는 용도로 사용한다. 타임리프는 주로 HTML 태그에 th:* 속성을 지정하는 방식으로 동작한다.th:* 로 속성을 적용하면 기존 HTML 속성을 대체하고, 기존 속성이 없으면 새로 만들게 된다.     jsp와 동시에 타임리프를 사용하기 위해 07 프로젝트 복사해서 08_THYMELEAF 프로젝트 만든다. start.spring.io에서 Thymeleaf 받아 explorer 눌러서 코드만 복사해준다.  그리고 build.gradle에 붙여넣기해준다. 코끼리 아이콘 눌러서 업데이트해준다.  다 했으면 r..

IT수업/SPRINGBOOT 2024.05.20

IT 수업 22주차 (155) RestController

● RestController @RestController는 @Controller에 @ResponseBody가 추가된 것으로RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것이다.    06 프로젝트 복사해서 07_RESTCONTROLLER프로젝트 만들어준다.  maven repository로 가서 필요한 gradle(short) 코드들을 복사하여 build.gradle에 붙여넣기 해준다. - jackson-databind   - jackson-dataformat-xml   -GSON   - json-simple  코끼리 아이콘 눌러서 업데이트 해준다. restcontroller 패키지 만들어서 그 안에 SimpleRestController 클래스 만들어준다. 프로젝트를 실행..

IT수업/SPRINGBOOT 2024.05.20

IT 수업 21주차 (154) 트랜잭션

05 프로젝트 복사해서 06_Tx 프로젝트를 만들어준다.  TxConfig.java에서 기본트랜잭션인 MYBATIS용 빈을 작성해준다.@EnableTransactionManagement 는 트랜잭션관리용 에노테이션이다.  실습을 위해 트랜잭션 문제를 발생시켜본다.  @Transactional 은 jakarta가 아닌 springframework로 import해야한다.   ctrl+shift+t 눌러서 TxTestServiceTest.java를 만들어 준다.  그러면 어떤 트랜잭션을 사용할껀지에 대한 오류가 발생하게 된다. 그래서 오류를 해결하기 위해 TxConfig로 가서 트랜잭션의 구별을 위해 bean의 이름을 지정해주고 @EnableJpaRepositories 어노테이션을 추가해준다.  @Enable..

IT수업/SPRINGBOOT 2024.05.17

IT 수업 21주차 (153) SQL

resources에 schema.sql 파일을 만들어 준다.  만들어진 schema.sql 에서 a 테이블을 create 하는 코드를 작성하고 AppApplicationTests를 실행시키면 workbench에 a 테이블이 생기게 된다.  만약 테이블이 존재하는데 다시 똑같은 이름의 테이블을 만들면 오류가 발생하게된다.그래서 이 오류를 발생시키지 않기 위해 if not exists를 적으면 같은 이름의 테이블이 create 되어도 오류가 발생하지 않게 된다.    나중을 위해 schema.sql에서 persistent_logins 테이블도 만들어 준다.      이번에는 resources 안에 data.sql을 만들고 데이터를 넣는 insert 문을 작성해본다.  실행 후 workbench를 확인했을 때..

IT수업/SPRINGBOOT 2024.05.17

IT 수업 21주차 (152) 외래키 설정

application.properties에서 추가로 작성해준다.  entity 패키지에 lend 클래스를 만들어준다. 그리고 lend 테이블을 만들어 본다. AppApplication을 실행해보면 lend 테이블이 만들어진 것을 확인 할 수 있다. Workbench로 가서 lend 테이블의 외래키를 확인해보면 만들어진 것을 확인 할 수 있다.  만들어진 lend 테이블을 삭제하고 book과 1:n 매핑을 시킨 다음 다시 AppApplication을 실행시켜본다. 그러면 둘다 같이 생긴 것을 확인 할 수 있다.   다시 lend 테이블을 삭제하고 나머지 대여일과 반납일 열까지 추가한다음 다시 실행시켜준다.    repository 에 LendRepository를 만들어 준다. 그리고 book 테이블가서 값..

IT수업/SPRINGBOOT 2024.05.16