Spring

Spring 일지 #39 (20210914) 화면 구현(비밀번호 변경)

uni5948 2021. 10. 1. 17:10

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_VALUEproduces = MediaType.APPLICATION_JSON_VALUE)

    public Map<StringObjectmemberPasswd(@RequestBody Map<StringObjectmapObj,

            @RequestHeader("token"String token) {

 

        Map<StringObjectmap = new HashMap<>();

        try {

            BCryptPasswordEncoder bcpe = new BCryptPasswordEncoder();

 

            // @RequestBody Map 으로 데이터 받기

            String userid = (StringmapObj.get("userid");

            String userpw = (StringmapObj.get("userpw");

            String usernewpw = (StringmapObj.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(userpwmember2.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;

    }

 

 *비밀번호 변경하기

 *변경 후 로그인으로 변경 확인

토큰 발행
토큰 삽입
변경 완료
변경 완료 확인