저번에
Bcrypt 어쩌고 encoder를 빈으로 인식을 못하는 것 같았다. @Autowired 했음에도 불구하고.
그래서 아래와 같은 어이없는 코드를 짜야 했다. 더 어이없는건 기존 인코딩 예제에서는 전혀 문제가 없었다는 것이다.
@Autowired
BCryptPasswordEncoder passwordEncoder;
@Bean
BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}```
(MemberServiceImpl의 일부이다.)
아래 사이트를 참고했다.
https://velog.io/@jinheesung/org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder%EC%9C%A0%ED%98%95%EC%9D%98-%ED%95%9C%EC%A0%95-%EB%B9%88%EC%9D%B4-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.
그리고 저번 인코딩 예제에서 설정 설명을 안 적어놨더니 그새 금붕어처럼 까먹었다.
시큐리티 단순 설정 한번 짚고 가보겠다.
1. pom.xml 설정
```js
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bcryptPasswordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />
</beans>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml
/WEB-INF/spring/appServlet/security-context.xml
//security-context.xml의 경로를 추가한다.
</param-value>
</context-param>
일단 비밀번호 찾기 기능은 다 만들었다. 마지막으로 임시 비밀번호로 로그인을 해보는 테스트가 남았다.
근데 디비에서 비밀번호 varchar() 제한 길이를 너무 줄였나보다.
인코딩한 비밀번호가 너무 길다고 sql이 빼액댄다. (개새기)
일단 Bcrypt passwordEncoder가 설정상 예외발생 가능성이 너무 높아서 한번 더 설정 체크했다.