06/21 수 필기

konut ko·2023년 6월 21일
1

더존비즈온5기

목록 보기
35/46

SPRINGUSER Table 수정

  • roll 권한 테이블 (엥 role 아닌가)
CREATE TABLE roll (
 userid VARCHAR2(20),
 Role_name VARCHAR2(30)
);

INSERT INTO roll VALUES('admin','ROLE_USER');
INSERT INTO roll VALUES('admin','ROLE_ADMIN');
INSERT INTO roll VALUES('kglim','ROLE_USER');
COMMIT;   

select * from roll;
select * from member;
  • member 테이블에 트리거 추가
create or replace trigger insert_member
after insert on member
for each row
BEGIN
    IF(:NEW.userid = 'admin') THEN  
        insert all
        into roll values(:NEW.userid ,'ROLE_ADMIN')
        into roll values(:NEW.userid ,'ROLE_USER')
        select * from dual;
    ELSE
        insert into roll(userid, role_name)
        values(:NEW.userid ,'ROLE_USER');
    END IF;
END;
  • member 테이블 컬럼 수정
desc member;
alter table member
modify (pwd varchar2(2000));

security

레거시 vs 부트

  • security-context 파일

  • 스프링 부트에서의 코드와 앞의 코드 비교!

참고
테이블 암호화를 위해 DB 수정

password 암호화 하기

설정

  • root-context와 security-context 설정 변경

  • 컨트롤러

보안관련 최종 플젝때 비기능적 요구사항 추가하면 좋다.


실습) 프로젝트 13 => 14에

  • 0) pom.xml에 의존라이브러리 spring-security - [web, config, taglibs]

  • 1) root-context.xml에 bCryptPasswordEncoder bean등록

  • 2) security-context.xml에 password-encoder 관련 태그 추가

  • 3) JoinController.java에 private BCryptPasswordEncoder 등록하고 encode해서 dao로 보내기

  • 코드

pom.xml

<!-- Spring Security -->
       <dependency>
           <groupId>org.springframework.security</groupId>
           <artifactId>spring-security-web</artifactId>
           <version>4.0.1.RELEASE</version>
         </dependency>
         <dependency>
           <groupId>org.springframework.security</groupId>
           <artifactId>spring-security-config</artifactId>
           <version>4.0.1.RELEASE</version>
       </dependency>
       <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>4.0.1.RELEASE</version>
       </dependency>
------------------------------------------------------------------------------------

root-context.xml

<bean id="bCryptPasswordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">

------------------------------------------------------------------------------------
security-context.xml

<security:authentication-manager>
      <security:authentication-provider>
         <security:jdbc-user-service
            data-source-ref="driverManagerDataSource"
            users-by-username-query="SELECT USERID, pwd AS PASSWORD, 1 enabled FROM member where userid=?"
            authorities-by-username-query="select m.USERID , r.ROLE_NAME  
                                from member m join roll r 
                                on m.userid = r.userid 
                                where m.userid=?" />
         <security:password-encoder ref="bCryptPasswordEncoder" />
      </security:authentication-provider>

   </security:authentication-manager>


JoinCOntroller.java

@Autowired
   private BCryptPasswordEncoder bCryptPasswordEncoder;



//POST 요청
   @PostMapping("join.htm")
   public String join(Member member) {
       String url= null;
       
       member.setPwd(this.bCryptPasswordEncoder.encode(member.getPwd())); //암호화
       try {
            url = memberservice.insert(member);
      } catch (Exception e) {
         e.printStackTrace();
      }
      return url;

   }
profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영

0개의 댓글