
Bean
프로젝트 생성 후 설정추가 작업을 해야한다.
-build.gradle
// Security
implementation 'org.springframework.boot:spring-boot-starter-security'
public PasswordEncoder passwordEncoder() {..} → passwordEncoder@Autowired
Food 객체1;
@Autowired
Food 객체2; -@Primary가 추가되면 같은 타입의 Bean이 여러 개 있더라도 우선 @Primary가 설정된 Bean 객체를 주입한다.인증과 인가
인증 (Authentication) : 해당 유저가 실제 유저인지 인증하는 개념
-ex. 스마트폰 지문인식, 사이트 로그인
인가 (Authorization) : 는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념
-ex. 관리자페이지-관리자 권한자만 접속
웹 애플리케이션 인증
-Http 라는 프로토콜을 이용하여 통신
-통신은 비연결성(Connectionless) 무상태(Stateless)로 이루어 진다.

인증방식
-쿠키-세션방식의 인증
->서버가 ‘특정 유저가 로그인 되었다’는 상태를 저장하는 방식

-JWT 기반 인증
->JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 토큰을 의미
->JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별
쿠키와 세션
쿠키와 세션 모두 HTTP 에 상태 정보를 유지(Stateful)하기 위해 사용
-> 쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 된다.
쿠키
-클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
-구성요소
세션
-서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
-서버에서 클라이언트 별로 유일무이한 '세션 ID' 를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
-서버에서 생성한 '세션 ID' 는 클라이언트의 쿠키값('세션 쿠키' 라고 부름)으로 저장되어 클라이언트 식별에 사용
-세션 동작 방식

쿠키와 세션 비교

쿠키 다루기
new Cookie(AUTHORIZATION_HEADER, cookieValue);setPath("/") , setMaxAge(30 * 60)@GetMapping("/get-cookie")
public String getCookie(@CookieValue(AUTHORIZATION_HEADER) String value) {
System.out.println("value = " + value);
return "getCookie : " + value;
}@CookieValue("Cookie의 Name")@GetMapping("/create-session")
public String createSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 새로운 세션을 생성한 후 반환
HttpSession session = req.getSession(true);
// 세션에 저장될 정보 Name - Value 를 추가합니다.
session.setAttribute(AUTHORIZATION_HEADER, "Auth");
return "createSession";
}req.getSession(true)@GetMapping("/get-session")
public String getSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 null 반환
HttpSession session = req.getSession(false);
String value = (String) session.getAttribute(AUTHORIZATION_HEADER);
// 가져온 세션에 저장된 Value 를 Name 을 사용하여 가져옵니다.
System.out.println("value = " + value);
return "getSession : " + value;
} -req.getSession(false) ->세션이 존재할 경우 세션을 반환하고 없을 경우 null을 반환session.getAttribute(”세션에 저장된 정보 Name”)📝오늘의 회고
숙련주차 차근차근 가보자~
오늘도! 쳐지지 말고 포기하지말고 힘내서 가보자고~