Spring

Spring 일지 #37 (20210914) 화면 구현(정보 수정)

uni5948 2021. 10. 1. 12:58

37. 정보 수정

-정보 수정

 *update 권한 설정 추가(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")

                .hasAnyAuthority("SELLER""CUSTOMER").anyRequest().permitAll().and();

 

 *member_update put 추가(ApiMemberController.java)

 *비밀번호는 수정되면 안되므로 기존 값을 넣어 유지한다.

 **@RequestBody 를 사용했으므로 포스트맨에서 확인할 때 json 을 사용한다.

 

 // 127.0.0.1:8080/ROOT/api/member_update

    // {"userid" : "aaa", 이름, 연락처} entity와 키를 맞춰줌

    @RequestMapping(value = "/member_update"method = {

            RequestMethod.PUT }, consumes = MediaType.ALL_VALUEproduces = MediaType.APPLICATION_JSON_VALUE)

    public Map<StringObjectmemberUpdate(@RequestBody Member member) {

        Map<StringObjectmap = new HashMap<>();

        try {

            Member member1 = mRepository.findById(member.getUserid()).get();

            member.setUserpw(member1.getUserpw());

            mRepository.save(member);

            map.put("status"200);

        } catch (Exception e) {

            e.printStackTrace();

            map.put("status"578);

        }

        return map;

    }

 

 *entity 수정(Member.java)

 *userdate, userrole은 수정하지 않을 것이므로 update 되지 않도록 수정한다.

 **updateable = false 를 하게 되면 이후 변경사항이 생겨도 수정이 불가능하게 되므로

   이후에 변경 되어야 할 항목은 updateable = false를 하지 않고 controller에서 기존 값을 넣어주는 방식으로 한다.

... ...

@Column(name = "USERROLE"updatable = false)

    private String userrole = null;

 

    @CreationTimestamp

    @Column(name = "USERDATE"updatable = false)

    private Date userdate = null;

... ...

 

 *정보 수정하기(포스트맨)

 **정보 수정을 위해 먼저 member_select 을 통해 로그인 하여 토큰을 생성한다.

토큰 발행
member_select에서 발행한 토큰 삽입
수정하기
수정완료