Home

Jeong-Yoon

17 Apr 2019

Study manager 프로젝트 진행과정5

2019.04.17 Study Manager 프로젝트 진행과정5

security user 수정

  • 로그인을 할 때, email로 로그인을 해주기 때문에 UserDetailService에 id를 넣어주는 코드를 추가했다.
    • study list 페이지에서 login한 user의 user_id로 스터디를 불러와야 하는데 값이 전혀 들어오지 않았다. 확인해보니 user_id가 null로 되어 있었다.
    • 이전 프로젝트에서는 user_id가 없이 그냥 id를 따로 만들었기 때문에 set을 해주지 않아도 됐지만 지금은 email로 로그인을 하고 user_id는 따로 있기 때문에 set을 해주어야 불러올 수 있었다.
      studyManagerSecurityUser.setId(user.getUserId());
      

로그인 성공 시 페이지 지정

  • 로그인을 성공하면 study list 페이지로 갈 수 있도록 하기 위해 SecurityConfig에 코드를 추가해 주었다.
    .defaultSuccessUrl("/study/list")
    

code를 입력해서 study 추가

  • 이 기능을 하기 위해서는 database도 수정해야 했다.
    • 처음에 단순히 alter문을 사용해서 code를 추가하고 not null과 unique 특성을 주려니까 되지 않았다.
    • alter문으로 추가하면 빈칸으로 생성되는데, 그 빈칸을 같은 값이라고 인식했기 때문이었다. 그래서 not null로 먼저 add를 해준 다음 code 값을 넣어주고 unique 제약조건을 주었다.
      ALTER TABLE study ADD code VARCHAR(8) NOT NULL;
      UPDATE studymanager.study SET code = '-' WHERE study_id = 1;
      ...
      ALTER TABLE study ADD CONSTRAINT code_UNIQUE UNIQUE(code);
    

login 시 index 페이지 접근 불가 설정

  • login을 하면 회원가입이나 login을 다시 할 이유가 없기 때문에 login을 한 다음에는 index 페이지로 접근 하려고 하면 study list 페이지로 넘어가도록 설정했다.
    • securityUser는 login을 하지 않았을 때 null이 아니라 anonymousUser로 값이 넘어온다.
      if(!SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals("anonymousUser")){
            
              return "redirect:/study/list";
      }
    
    

Til next time,
Jeong-Yoon at 00:00

scribble