Spring에서 이용자 정보를 저장할 때 BcryptPasswordEncoder 를 사용하여 암호화하는 예
서블릿 설정파일에 BcryptPasswordEncoder 를 빈으로 등록하고 필요한 클래스 내에서 @Autowired으로 사용하는 예
서블릿 설정파일의 관련부분
<beans:bean id="passwordEncoder"
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />위에서 빈으로 설정된 passwordEncoder를 자바코드에서 사용하는 예
package org.kdea.bcrypt;
import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.*;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.*;
@Service
public class UserAuthService
{
@Autowired
UserAuthDAO dao;
@Autowired
BCryptPasswordEncoder passwordEncoder; //서블릿 설정파일에 빈으로 등록
public String add(UserAuthVO user)
{
// 이용자의 비밀번호를 bcrypt 알고리듬으로 암호화하여 DB에 저장한다
String encodedPwd = passwordEncoder.encode(user.getPwd());
user.setPwd(encodedPwd);
user.setEnabled('1');
user.setAuthority("USER");
boolean added = dao.add(user);
JSONObject jsObj = new JSONObject();
jsObj.put("ok", added);
jsObj.put("pwd", encodedPwd);
return jsObj.toJSONString();
}
public String login(UserAuthVO user) {
UserAuthVO db = dao.getUser(user);
// 이용자가 로그인할 때 평문 비밀번호와 암호화된 비밀번호를 이용하여 비교한다
boolean found = passwordEncoder.matches(user.getPwd(), db.getPwd());
JSONObject jsObj = new JSONObject();
jsObj.put("ok", found);
return jsObj.toJSONString();
}
}