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;
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;
desc member;
alter table member
modify (pwd varchar2(2000));
security-context 파일
스프링 부트에서의 코드와 앞의 코드 비교!
참고
테이블 암호화를 위해 DB 수정
root-context와 security-context 설정 변경
컨트롤러
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;
}