본문 바로가기
회고

TIL_211123

코동이 2021. 11. 23.

1. Facts(사실, 객관)

 

- 프로젝트 크롤링 기능 개선 및 권한 추가

 

2. Feelings(느낌, 주관)

 

프로젝트의 서버가 정상 실행된다면 매일 밤마다 새롭게 올라온 교보문고 인터뷰 화면을 크롤링해서 저장합니다. 그런데, 로컬환경에서 작업중이어서 매일 서버를 킬 수 없으므로 놓치는 인터뷰들이 여럿이 있어서 수동으로 추가해야겠다는 생각을 했습니다. 이 기능은 어드민 관리자만 가능하도록 만들어야 했기 때문에 새롭게 ADMIN 관리자 계정을 추가하고 권한을 주었습니다. 또한, content를 검사해서 이미 존재한다면 다음 기사를 크롤링합니다. 크롤링 버튼도 원칙적으로 ADMIN만 보이도록 설정했습니다. 나중에 프로젝트가 모양을 잡아간다면, 어드민탭을 따로 만들어서 방을 관리하고 회원을 관리하는 기능을 만들 생각입니다.

 

3. Findings (배운 점)

 

@PreAuthorize("hasAuthority('ADMIN')")

 

Controller 해당 설정을 하면 spring security는 ADMIN 권한을 가지고 있는지 확인하는데, 찾아가는 과정이 아래와 같다.

 

SecurityContextHolder에서 Authentication 객체에 UserDetails를 상속하는 객체가 들어있고 이를 spring security에서 계정을 사용하는 전략이다. 여기의 Authentication에 있는 UserAccount 객체는 ADMIN 권한을 가지고 있어야 한다. 이 권한은 UserDetails를 구현하는 객체에 List<GrantedAuthoritiy> 를 생성자에 함께 넣어서 설정한다. 

 

public class UserAccount implements UserDetails {
    private final Account account;
    private final List<GrantedAuthority> authorities;

    @Builder
    public UserAccount(Account account, List<GrantedAuthority> authorities) {
        this.account = account;
        this.authorities = authorities;
    }

 

참고로 권한은 회원가입할 때 무조건 USER를 넣어주는데, Role 테이블을 따로 두고, ADMIN은 DB에서 임의로 생성한다.

 

 

4. Affirmation (자기 선언)

나는 내가 배운 기술을 실제 프로젝트에 적용하면서 공부하는 사람이다

반응형

'회고' 카테고리의 다른 글

TIL_211125  (0) 2021.11.25
TIL_211124  (0) 2021.11.25
TIL_211122  (0) 2021.11.22
TIL_211117  (0) 2021.11.17
TIL_211115  (0) 2021.11.16