1. 스프링 심화 강의
1. Spring Security
- 비밀번호 암호화 적용 및 알고리즘의 종류 : 양방향, 단방향 암호 알고리즘
- 커스텀 시큐리티 필터 적용하기
- @AuthenticaionPrincipal : Authentication 객체에서 principal 인스턴스의 값을 가져오는 어노테이션
- @Secured : 권한 설정 방법 -> 컨트롤러에 해당 메서드 위에 어노테이션 표시
// (관리자용) 등록된 모든 상품 목록 조회
// MySelectShop 예시
@Secured("ROLE_ADMIN")
@GetMapping("/api/admin/products")
public List<Product> getAllProducts() {
return productService.getAllProducts();
}
- 접근 제한 페이지
1) TestController 생성
2) UserController에 "/forbidden" Post 메서드 생성
3) WebSecurityConfig
// 접근 제한 페이지 이동 설정
http.exceptionHandling().accessDeniedPage("/api/user/forbidden");
4) TestApi에 @Secured로 권한 설정
401, 403 Error ExceptionHandling
1) SecurityExceptionDto 생성 : 오류 발생시 코드와 메세지를 커스텀하여 사용하겠다.
2) CustomAccessDeniedHandler 생성
3) CustomAuthenticationEntryPoint 생성
4) WebSecurityConfig
// 접근 제한 페이지 이동 설정
// http.exceptionHandling().accessDeniedPage("/api/user/forbidden");
// 401 Error 처리, Authorization 즉, 인증과정에서 실패할 시 처리
http.exceptionHandling().authenticationEntryPoint(customAuthenticationEntryPoint);
// 403 Error 처리, 인증과는 별개로 추가적인 권한이 충족되지 않는 경우
http.exceptionHandling().accessDeniedHandler(customAccessDeniedHandler);
403 (Forbidden) 클라이언트 오류 상태. 서버에 요청이 전달되었지만, 권한 때문에 거절됨.
2. MySelectShop에 Security 실습
1)사용자의 회원가입 -> permitAll 설정, 비밀번호는 암호화 후 DB 저장
2) 로그인 -> permitAll 설정, 로그인 성공 시 JWT 토큰 생성 -> 쿠키 저장소에 저장
3) 사용자의 각 요청시 토큰도 함께 전송 -> 서버는 쿠키저장소의 토큰 정보와 요청의 토큰을 비교를 통한 사용자 인증
4) Security에 JWT 인증방식 적용 실습, User Domain, Product Domain, Folder Domain Security 적용 실습
3. OAuth2
카카오를 이용한 OAuth2 로그인 서비스 구현
2. JAVA 기초 수업
반복문
1) for 문
package com.sparta.hbd04.prac01;
import java.util.Scanner;
public class Prac01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
System.out.println("정수 입력 :" + num);
int count = 0;
for (int i = 0; i <= num; i++) {
if(i % 2 == 1) {
count++;
}
}
System.out.println(num + "까지의 개수는" + count + " 개입니다.");
}
}
2) for : each 반복문 ~ int 반복문에는 사용할 수 없다.
3) while
package com.sparta.hbd04.prac01;
import java.util.Scanner;
public class Prac01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
System.out.println("자연수 " + num + "까지의 짝수의 합을 구하세요");
int i = 0;
int sum = 0;
while(i <= num) {
if (i % 2 == 0) {
sum = sum + i;
}
i++;
}
System.out.println("합은 " + sum + "입니다.");
}
}
4) 이중 for문
package com.sparta.hbd04.prac01;
public class Prac01 {
public static void main(String[] args) {
for (int i = 2; i <= 9; i ++) {
for(int j = 1; j <= 9; j++) {
System.out.println(i + "*" + j + "=" + (i*j));
}
}
}
}
3. 코딩 테스트 입문
문제 해결 : 배열 ~ 아이스 아메리카노
4. 문시해알 정리
어떤 문제가 있었는지 :
스프링 부트 버전 이슈
강의 내용 중 스프링 시큐리티 실습 forbidden 페이지를 출력하는 부분에서 일반 유저로 로그인해도 접근불가 페이지가 출력되는 것이 아닌 바로 로그인 화면을 출력
시도해본 것 :
버전 낮추기
강의를 따라 코드를 수정하기를 약 3시간은 투자했지만..
어떻게 해결했는지 :
버전 이슈는 해결
접근불가 페이지는 아직 해결하지 못했다. 바로 다음 강의인 셀렉트샵에서는 접근불가 페이지를 출력하는 데 성공한 만큼, 아직 원인은 정확히 알지 못하지만 나중으로 우선순위를 낮추고 천천히 봐야겠다.
뭘 새롭게 알았는지 :
스프링 시큐리티와 JWT 토큰을 이용한 회원가입/ 로그인 기초
'내일배움캠프 4기 스프링 > 내배캠 TIL📘' 카테고리의 다른 글
12. 28 코딩 테스트 입문/ 스프링 심화 강의 + 자바 ORM 표준 JPA 프로그래밍 (0) | 2022.12.28 |
---|---|
12. 27 코딩 테스트 입문/ 스프링 심화 강의 (0) | 2022.12.27 |
12. 23 개인 과제 수행/ 스프링 심화 강의/ 디자인 패턴/ @Anotation (0) | 2022.12.26 |
12. 22 개인 과제 수행/ 자바 기초 수업/TIL 특강/ REST API 특강 (0) | 2022.12.22 |
12. 21 과제 수행/ 라이브 코딩 수강 (0) | 2022.12.21 |