Auditing을 이용한 엔티티 공통 속성화
- @MappedSuperclass
- AuditorAware 인터페이스
- @EntityListeners
- @EnableJpaAuditing
JPQL
-설정된 주기별로 실행될 함수를 설정
@Scheduled
1) fixedDelay
: 작업 완료 후 고정 시간 지연 간격
2) fixedRate
: 고정 시간 간격으로 실행
3) initialDelay
: 작업 시작 전 시간 간격 지연
4) cron
: 상세한 실행 주기를 설정할 때
0 0 */1****
1시간 마다 실행 정각 실행
0 30 13,18***
오후 1시 30분
오후 6시 30분 실행
5) @EnableScheduling
: 스케줄링 설정 활성화
스프링 시큐리티
-인증,인가
- 의존성 설치
- 스프링 시큐티리 설정
- 회원가입 구현
1) UserDetails 인터페이스 : DTO
2) UserDetailsService 인터페이스 : Service
- 시큐리티를 이용한 회원 인증(로그인) 구현
- 로그인 정보 가져오기
1) Principal 요청메서드에 주입 : getName() : 아이디 : 요청 메서드의 주입
2) SecurityContextHolder를 통해서 가져오기
3) @AuthenticationPrincipal : UserDetails 구현 객체 주입, 요청 메서드의 주입시 밖에 사용 가능
4) Authentication
Object getPrincipal(...) : UserDetails의 구현 객체
boolean isAuthenticated() : 인증 여부
/error 템플릿 경로 : 응답 코드.html
-
thymeleaf-extras-springsecurity6
1) xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
2) sec:authorize="hasAnyAuthority(...)", sec:authorize="hasAuthority(...)"
3) sec:authorize="isAuthenticated()" : 로그인 상태
4) sec:authorize="isAnonymous()" : 미로그인 상태
5) csrf 토큰 설정하기
- ${_csrf.token}
- ${_csrf.headerName}
-
페이지 권한 설정하기
-
Spring Data Auditing + Spring Security
- 로그인 사용자가 자동 DB 추가
1) AuditorAware 인터페이스
POST 요청시 CSRF 토큰 검증 : 검증 실패시 403
- 자바 스크립트 ajax 형태로 POST 데이터를 전송할시 CSRF 토큰 검증
- @EnableMethodSecurity
1) @PreAuthorize: 메서드가 실행되기 전에 인증을 거친다.
2) @PostAuthorize: 메서드가 실행되고 나서 응답을 보내기 전에 인증을 거친다.
3) 사용할수 있는 표현식
- hasRole([role]) : 현재 사용자의 권한이 파라미터의 권한과 동일한 경우 true
- hasAnyRole([role1,role2]) : 현재 사용자의 권한디 파라미터의 권한 중 일치하는 것이 있는 경우 true
- principal : 사용자를 증명하는 주요객체(User)를 직접 접근할 수 있다.
- authentication : SecurityContext에 있는 authentication 객체에 접근 할 수 있다.
- permitAll : 모든 접근 허용
- denyAll : 모든 접근 비허용
- isAnonymous() : 현재 사용자가 익명(비로그인)인 상태인 경우 true
- isRememberMe() : 현재 사용자가 RememberMe 사용자라면 true
- isAuthenticated() : 현재 사용자가 익명이 아니라면 (로그인 상태라면) true
- isFullyAuthenticated() : 현재 사용자가 익명이거나 RememberMe 사용자가 아니라면 true