39. 비밀번호 변경
-비밀번호 변경
*password 권한 설정 추가(SecurityConfig.java)
// 권한 설정
http.authorizeRequests()
// 127.0.0.1:8080/ROOT/admin/login
.antMatchers("/admin", "/admin/*").hasAuthority("ADMIN")
// 127.0.0.1:8080/ROOT/seller/login <= ADMIN, SELLER
.antMatchers("/seller", "/seller/*", "/api/seller/*").hasAnyAuthority("ADMIN", "SELLER")
.antMatchers("/api/member/update", "/api/member/delete", "/api/member/password")
.hasAnyAuthority("SELLER", "CUSTOMER").anyRequest().permitAll().and();
*member_password put 추가(ApiMemberController.java)
*@RequestBody Map을 이용해 newpw 를 받는다.
**@RequestBody 를 사용했으므로 포스트맨에서 확인할 때 json 을 사용한다.
// 127.0.0.1:8080/ROOT/api/member_password
// {"userid" : "aaa", 이름, 연락처} entity와 키를 맞춰줌
@RequestMapping(value = "/member_password", method = {
RequestMethod.PUT }, consumes = MediaType.ALL_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, Object> memberPasswd(@RequestBody Map<String, Object> mapObj,
@RequestHeader("token") String token) {
Map<String, Object> map = new HashMap<>();
try {
BCryptPasswordEncoder bcpe = new BCryptPasswordEncoder();
// @RequestBody Map 으로 데이터 받기
String userid = (String) mapObj.get("userid");
String userpw = (String) mapObj.get("userpw");
String usernewpw = (String) mapObj.get("usernewpw");
// 토큰과 사용자아이디 일치시점
System.out.println(token.substring(7));
if (jwtUtil.extractUsername(token.substring(7)).equals(userid)) {
// 아이디를 이용해서 기존 정보 가져오기
Member member2 = mRepository.findById(userid).get();
if (bcpe.matches(userpw, member2.getUserpw())) {
Member member = new Member();
member.setUserid(userid);
member.setUserpw(bcpe.encode(usernewpw));
mRepository.save(member);
}
map.put("status", 200);
}
} catch (Exception e) {
e.printStackTrace();
map.put("status", 578);
}
return map;
}
*비밀번호 변경하기
*변경 후 로그인으로 변경 확인
'Spring' 카테고리의 다른 글
Spring 일지 #41 (20210914) 화면 구현(주문하기) (0) | 2021.10.01 |
---|---|
Spring 일지 #40 (20210914) 화면 구현(물품 등록) (0) | 2021.10.01 |
Spring 일지 #38 (20210914) 화면 구현(회원 탈퇴) (0) | 2021.10.01 |
Spring 일지 #37 (20210914) 화면 구현(정보 수정) (0) | 2021.10.01 |
Spring 일지 #36 (20210914) 화면 구현(seller 페이지 접속) (0) | 2021.09.30 |