SpringSecurity.png

1.의의

2.설정


@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
	
	@Override
	protected void configure(**AuthenticationManagerBuilder auth**) throws Exception {
	
	auth.userDetailsService(customUserDetailsService())
		.passwordEncoder(passwordEncoder());
	}
	
	...

	@Bean
	public PasswordEncoder passwordEncoder() {
		return new BCryptPasswordEncoder();
	}	
  //
	@Bean
	public UserDetailsService customUserDetailsService() {
		return new CustomUserDetailsService();
	}
	
}

2.유저 상세 정보 가져오기

package org.hdcd.common.security.service;

import org.hdcd.common.security.domain.CustomUser;
import org.hdcd.domain.Member;
import org.hdcd.mapper.MemberMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class CustomUserDetailsService **implements UserDetailsService** {
	
	@Autowired
	private MemberMapper memberMapper;

	@Override
	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
  //username은 사용자명이 아니라 사용자 아이디를 의미한다.	
	log.info("Load User By Username : " + username);

		Member member = memberMapper.readByUserId(username);

		log.info("queried by member mapper: " + member);

		return member == null ? null : new CustomUser(member);
	}

}