![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cEgqH0/btqyaqy9hXi/5qDXqluOf19ecNn4Kk5IyK/img.png)
Spring Security - Test 2 Spring Security Test Form Login 기능 formLogin 기본설정을 사용하고 있지만 password, url 등 formLogin 과 관련된 설정을 커스터마이징이 가능하다. 그러한 설정한 내용들이 제대로 동작하는지 테스트가 가능하다. FormLogin spring-security-test의 formLogin june/1234 로 formLogin 을 시도하면 폼 로그인이 성공하는것을 기대하는 테스트 코드 이다. 아래의 코드를 살펴보자. 기존 테스트들은 get(), post(), put() 등 httpMethod와 관련된 method를 사용하였지만 spring-security-test 의 formLogin()을 사용한다. user(): 유..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/rw2Oc/btqyapfW5OC/YMjjZBveZsq4MNxqP7c6Ek/img.png)
Spring Security - Test 1 기존의 테스트 방법 애플리케이션을 실행 웹 브라우저에서 직접 확인 코드가 변경될때마다 유저를 다시 생성해주고, url 하나하나에 일일히 접근해야한다. 매우 번거롭다 소스코드를 사용해서 테스트를 진행하도록 방법을 변경하자. 의존성 추가 spring-security-test 는 version관리가 되고있지 않다. 따라서 버전을 명시해주는것이 좋다. 테스트 코드 JUnit을 활용하여 index 페이지에 대한 테스트 진행하는 매우 간단한 코드이다. 하지만 이때 사용자의 인증 정보를 TEST 하려면 어떻게 해야 할까 ? spring-security-test 에서 제공하는 with method를 활용하자. with() method를 이용해 유저 인증정보를 Mocking ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bbaUnz/btqx8TOLG0t/vojP4w8NStWafKUVuaGOY1/img.png)
Spring Security - PasswordEncoder Domain 로직의 {noop} + password 를 passwordEncoder에게 역할을 위임 하도록 한다. PasswordEncoder 를 빈으로 등록하기 SpringSecurity 5 이전 버전에서 사용하던 NoOpPasswordEncoder 를 빈으로 등록한다. Deprecated 되어 권장하지 않는 방법이다. PasswordEncoder 적용하기 PasswordEncoder를 주입받아 Account 로 넘겨준뒤 인코딩 작업을 진행한다. AccountService 기존의 {noop} + passwordEncoder 로 인코딩 작업을 해주던 로직을 passwordEncoder를 사용하는 방식으로 변경한다. Account 테스트 pass..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c6uds7/btqx8MbfeK7/61Y1W34fO4OikZOuxK7Qn0/img.png)
Spring Security - JPA 연동하기 InMemoryUser 방식은 문제점이 존재하기때문에 DATABASE와 연동하는 방법을 사용한다. 방법이 다양하지만 그중에서도 JPA와 연동하는 방법을 사용한다. 의존성 추가하기 JPA 의존성을 추가하고, DATABASE는 h2 를 사용하도록 한다. Account User 정보에 해당하는 Account Entity 를 생성한다. username은 유일한 값이기 때문에 Unique 제약조건을 걸어준다. JpaRepository 를 상속받는 AccountRepository 를 생성해준다. 기본적인 CRUD, Paging 관련 구현이 모두 끝난다. 또한 추가적으로 username으로 조회를 해야하기때문에 username으로 조회하는 namedQuery Metho..