일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- between date
- Gradle
- mybatis
- 배열스트링
- catalina log
- 라즈베리파이
- Java
- bitbucket
- Linux
- intellij
- oracle between
- springboot
- datasource
- git
- hikaricp
- hikari
- Spring Security
- Spring
- MySQL
- log4j2
- ORACLE CLOUD
- STS
- github
- log4j profile
- template
- between 날짜
- Spring Boot
- ubuntu
- python 개발환경
- oracle
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
- between date
- Gradle
- mybatis
- 배열스트링
- catalina log
- 라즈베리파이
- Java
- bitbucket
- Linux
- intellij
- oracle between
- springboot
- datasource
- git
- hikaricp
- hikari
- Spring Security
- Spring
- MySQL
- log4j2
- ORACLE CLOUD
- STS
- github
- log4j profile
- template
- between 날짜
- Spring Boot
- ubuntu
- python 개발환경
- oracle
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