Spring Boot
컨트롤러
@Autowired
private PasswordEncoder enc;
@RequestMapping("/everyone/formOK.do")
String formOK(LoginVO vo) {
vo.setPassword(enc.encode(vo.getPassword()));
service.formOK(vo);
return "index.html";
}
컨트롤러에 시큐리티 config에 있는 PasswordEncoder를 불러와 사용하여 패스워드의 암호화를 걸어 insert 동작으로 DB에 저장할 수있다.
해당 이미지 처럼 {bcrypt} 가 걸려있는 60자의 암호화된 패스워드로 확인할 수 있다.
해당 경로에 클래스 파일을 사용하여 Junit을 통한 테스트 동작을 할 수있다.
Tip
테스트 동작 시 Junit의 버전이 실행하는 버전과 동일한지 확인하고 동일하게 맞춰주어야 정상적으로 동작이 가능하다
package com.psd.k4;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.test.annotation.Commit;
import org.springframework.test.context.junit4.SpringRunner;
import com.psd.k4.login.LoginServiceImpl;
import com.psd.k4.login.LoginVO;
@RunWith(SpringRunner.class)
@SpringBootTest
@Commit
public class PasswordEncoderTest {
@Autowired
private LoginServiceImpl service;
@Autowired
private PasswordEncoder enc;
@Before
public void testDelete() {
LoginVO vo = new LoginVO();
vo.setUsername("user1");
service.deleteOK(vo);
System.out.println("삭제하기~~~~~~~: ");
}
@After
public void testSelect() {
for(int i=0; i<5; i++) {
LoginVO vo = new LoginVO();
service.selectAll(vo);
System.out.println("목록보기~~~~~~~: " + vo);
}
}
@Test
public void testInsert() {
for (int i=6; i<11; i++) {
LoginVO vo = new LoginVO();
vo.setUsername("user" + i);
vo.setPassword(enc.encode("user"+i));
vo.setName("서유저"+i);
vo.setRole("ROLE_USER");
service.formOK(vo);
}
System.out.println("저장완료~~~~~~~");
}
}
어노테이션을 활용하여 삭제, 목록, 추가 동작을 확인할 수 있다.