180121-TIL

Reading time ~1 minute

오늘 한일

- Spring Security

  • 기존에 만든 로그인, 회원 가입에 Spring Security 적용

    • 기존의 member를 Spring Security의 User클래스를 상속한 클래스의 필드로 만듬
      public class SecurityMember extends User{
           private Member member;  
      
         public SecurityMember(Member member) {
           //email로 로그인  
           super(member.getEmail(), member.getPassword(), makeGrantedAuthority(member.getRoles()));
           this.member = member;
         }
      
    • UserDetailsservice 구현체

      @Service("securityMemberService")
      public class SecurityMemberService implements UserDetailsService{
      
      	@Resource(name="memberRepository")
      	private MemberRepository memberRepository;
      
      	@Override
      	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
      
          .....
      
      		return new SecurityMember(member);
      	}
      
      
    • custom UserDetailsService 등록

      public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
        auth.userDetailsService(securityMemberService).passwordEncoder(passwordEncoder());
      }
      
    • Authentication authentication를 통해 로그인 한 사용자를 받아옴

      @GetMapping("/myboards")
      public String board(Authentication authentication, Model model) {
        model.addAttribute("boards", memberService.getBoardsByEmail(authentication.getName()));
        return "/boards";
      }
      

- 채용 중인 회사 찾아보기


오늘 느낀점

  • 역시 구현 해둔 코드들에 Spring Security를 적용하여 리팩토링 하려고하니까 쉽지 않았다. 그래서 새로 레파지토리를 만들어서 학습한 내용대로 구현을 하고서 성공 하는 것을 본다음 기존 프로젝트에 적용을 해봤다.

    이미 사용 하고 있던 Interceptors나 기존의 로그인 페이지는 AJAX로 데이터를 주고 받다보니 Security와는 조금 다른 부분이 있어 헤매긴 했지만 적용 완료 됐다. 조금씩 고쳐야 할 부분들도 있지만 가장 중요한 건 @LoginUser로 로그인 안된 사람이 접근 불가능 하던 부분과 테스트 코드들을 고쳐야 겠다.


내일 할일

  • trello 구현하기

    • 기존의 @LoginUser 제거, 테스트 코드 수정, Spring Security에 대한 리팩토링
  • 자소서 작성