본문 바로가기

개발/Java & Spring

[Spring] Spring-security로 암호화된 사용자 비밀번호 변경하기 / S3 이미지 삭제하기/ S3 이미지 JSP에 띄우기 - 개발일기 A[10]


오늘 트레이너의 마이페이지 기능 구현을 완료하였고,

짤막한 거 세개를 기록하려고 한다.





1. Spring security를 통해 생성된 유저의 비밀번호 비교하기.


스프링 시큐리티를 사용하여 유저를 생성하면 반드시 어떤 암호화 방식이든 패스워드가 암호화 되어있을 것이다.

사용자의 비밀번호를 변경해주고 싶은데, 암호화된 패스워드로부터 복호화 할 방도가 없다.


나는 AccountService 에서

------------------------------------------------------------------------

@Autowired

PasswordEncoder passwordEncoder;

public Account save(Account account,String role,String type) {

// TODO Auto-generated method stub


account.setPassword(passwordEncoder.encode(account.getPassword()));

account.setAccountNonExpired(true);

account.setAccountNonLocked(true);

account.setCredentialsNonExpired(true);

account.setEnabled(true);

account.setType(type);

return accounts.save(account, role);

}

------------------------------------------------------------------------

이런식으로 사용자를 추가해줬는데,

이 때 사용된 PasswordEncoder를 통해 패스워드를 원래의 값과 비교할 수 있다.


------------------------------------------------------------------------

passwordEncoder.matches(oldpassword, account.getPassword())

------------------------------------------------------------------------

여기있는 oldpassword가 비교하고 싶은 패스워드 즉, 평문.

account.getPassword()가 db에 암호화되어서 저장된 비밀번호이다.


이렇게 비교할 수 있다.


2. S3이미지 삭제하기


이미지 삭제는 너무 쉬워서 따로 서비스 인터페이스 만들어주려다가 기존 서비스에 그냥 추가했다.


 public void deleteFile(String filename){
	   try{
		   amazonS3Client.deleteObject(bucket+"/trainer",filename );
	   }catch(Exception e){
		   e.printStackTrace();
	   }
	   logger.info("정상적으로 삭제되었습니다");
   }

/trainer 은 버킷 내 폴더 이름이다. 

참 쉽죵 



3. S3에서 이미지 불러오기.


여러 방법이 있던데, S3 사용법은 나중에 따로 예제를 통해 익혀줄거라서 간단히 url로 불러왔다.


https://s3-ap-southeast-1(region을 넣는다).amazonaws.com/(bucket이름)/(폴더명)/fileName


이 경로를 img src에 넣어주면 된다. 간-단