Spring 4/BcryptPasswordEncoder
Spring BcryptPasswordEncoder example
Soul-Learner
2016. 5. 17. 17:55
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(); } }