일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- github
- Linux
- oracle between
- ubuntu
- Gradle
- template
- Java
- bitbucket
- log4j profile
- MySQL
- springboot
- between 날짜
- 라즈베리파이
- Spring Security
- ORACLE CLOUD
- hikari
- mybatis
- Spring
- log4j2
- STS
- catalina log
- git
- 배열스트링
- datasource
- Spring Boot
- between date
- intellij
- oracle
- python 개발환경
- hikaricp
Archives
- Today
- Total
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- github
- Linux
- oracle between
- ubuntu
- Gradle
- template
- Java
- bitbucket
- log4j profile
- MySQL
- springboot
- between 날짜
- 라즈베리파이
- Spring Security
- ORACLE CLOUD
- hikari
- mybatis
- Spring
- log4j2
- STS
- catalina log
- git
- 배열스트링
- datasource
- Spring Boot
- between date
- intellij
- oracle
- python 개발환경
- hikaricp
Archives
- Today
- Total
파워노트
security 를 이용한 로그인시 authentication and session 본문
반응형
Spring Security 를 이용하여 로그인시에 로그인정보 저장
- form 로그인을 통해 로그인시 detailService를 통해 로그인 정보를 불러와 로그인 유효성을 따져서 로그인을 하게 된다.
- 이때 최종 login success가 되고 나면 Authentication principal의 구현체에서 가져올수 있다.
- UserDetail 데이터를 Authentication 내부에 저장을하지마 또한 Session내에도 저장을 진행한다.
SecurityContextHolder를 통한 로그인 정보 가져오기
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
// 비로그인 접근
if (authentication instanceof AnonymousAuthenticationToken) {
throw new BaseException("", MessageType.ERROR_PAGE_403.toString(), HttpStatus.OK);
}
CustomUserDetails user = (CustomUserDetails) authentication.getPrincipal();
Sesseion 객체를 통한 로그인 정보 가져오기
HttpSession session = request.getSession();
Object securityContextObject = session.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY);
if(securityContextObject != null) {
SecurityContext securityContext = (SecurityContext)securityContextObject;
Authentication authentication = securityContext.getAuthentication();
// 비로그인 접근
if (authentication instanceof AnonymousAuthenticationToken) {
throw new BaseException("", MessageType.ERROR_PAGE_403.toString(), HttpStatus.OK);
}
CustomUserDetails user = (CustomUserDetails) authentication.getPrincipal();
}
- Session 개체에서는 security 관련 security_context 를 Key = "SPRING_SECURITY_CONTEXT" 에 담고 있다.
spring security 를 이용하여 로그인시에는
- security context 객체 정보를 session에 담고 있다.
반응형
'spring boot' 카테고리의 다른 글
mybatis query log 찍기 (log4j2) [권장] (0) | 2022.01.14 |
---|---|
mybatis query log 찍기 (0) | 2022.01.07 |
이유 없이 controller 유입이 두번씩 될때.. favicon 404 (0) | 2022.01.07 |
[ skeleton ] spring boot exception ( 예외 처리 ) (0) | 2021.11.28 |
[ skeleton ] spring boot security ( web login ) (0) | 2021.11.26 |
Comments