Spring
[Spring] 로그인, 스프링 시큐리티
삶_
2022. 8. 18. 07:59
HttpSession
- 웹사이트에 방문한 사용자에 대한 정보를 저장하는 방법 제공
- 웹 서버에 상태를 유지하기 위한 정보를 저장
- ex. 로그인 시 사용자 정보, 장바구니 등
- 모든 jsp에서 사용 가능
- map 형식으로 관리 (key 값은 중복이 안된다)
- 메서드
- 값 생성
- getSession(true)
- 이미 세션이 있다면 그 세션을 돌려줌.
- 세션이 없다면 새로운 세션 생성
- getSession(false)
- 이미 세션이 있다면 그 세션을 돌려줌.
- 세션이 없다면 null을 돌려줌
- getSession(true)
- 값 저장
- setAttribute(String name(=key), Object value(=value))
- 값 얻기
- getAttribute(String name(=key))
- 값 제거
- invalidate()
- ex. 로그아웃. 묶여있는 모든 속성 제거함
- removeAttribute(String name)
- 특정 이름의 속성 제거
- invalidate()
- 값 생성
RedirectAttributes
- HTTP GET 메서드 방식
- 하지만 이건 URL이 노출되지 않음 (POST 와 착각이 듬)
- GET 방식은 원래 ? + 파라미터를 붙여 전달해 URL이 노출됨
- 요청 처리 후 redirect 시, 데이터를 넘기는 방법
- 요청이 있으면 응답이 생기는데,
- 사용자가 권한이 없는 페이지에 실수로 들어가게 될 경우
- 다른 페이지로 이동하게끔 redirect 가 필요함
- 메인페이지 -> 권한없는 페이지A -> 권한 얻는 페이지B -> 권한얻고 다시 그 페이지A 로 이동
- 메서드
- addAttribute("라랄라", msg);
- 새로고침해도 데이터는 유지됨
- String으로 변환 가능한 타입만 넘길 수 있음
- 속성 넘기기 - url에 노출됨. 쿼리 파라미터로 표시
- ?msg=라랄라
- addFlashAttribute("라랄라", msg)
- 데이터가 한번만 사용됨
- 데이터가 2개 이상이라면 map을 이용해 전달해야 함
- 객체로 전달 가능
- jsp 파일에서 ${msg} 하면 "라랄라" 출력됨
- 데이터가 한번만 사용됨
- addAttribute("라랄라", msg);
Spring Security
- 단방향 해시함수 사용(암호화) 하는 라이브러리
- ex. 비밀번호 암호화하기
- pom.xml 에 라이브러리 추가
- 메서드
- PasswordEncoder
- BcryptPasswordEncoder : Bcrypt 해시 함수를 사용하여 비밀번호 암호화
- 보통 이걸 사용
- 인터페이스 PasswordEncoder 의 구현 클래스
- encode(b) : 비밀번호 단방향 암호화 하기
- matches(a,b) : 암호화되지 않은 비밀번호, 암호화된 비밀번호 비교
BCryptPasswordEncoder pwdEncoder;
MemberVO login = service.login(vo);
boolean pwdMatch = pwdEncoder.matches(vo.getUserPass(), login.getUserPass());
// 겉으로는 문자열 자체가 다르기에 다른 문자같지만,
// matches를 통해 같은 문자(true) 임이 증명됨