권한관리 질문드립니다.
- 작성자 :
- 장*형
- 작성일 :
- 2014-07-09 14:53:26
- 조회수 :
- 922
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
egov 보단 spring 쪽의 질문인거 같긴 한데..
마땅히 질문할 곳이 없어 문의드립니다.
오픈커뮤니티 spring-security 편 영상을 보면서 테스트 중인데요
<authentication-provider user-service-ref="jdbcUserService">
<password-encoder hash="sha-256" />
</authentication-provider>
<jdbc-user-service id="jdbcUserService" data-source-ref="dataSource"
users-by-username-query="SELECT USER_ID, PASSWORD, ENABLED, USER_NAME FROM USERS WHERE USER_ID = ?"
authorities-by-username-query="SELECT USER_ID, AUTHORITY FROM AUTHORITIES WHERE USER_ID = ?" />
위와 같이 spring-security 설정 후
create table users (
user_id varchar(20) not null primary key,
password varchar(50) not null,
enabled boolean not null,
user_name varchar(50) not null
);
오라클에서 테이블을 생성하려 하니 enabled 컬럼이 boolean 타입으로 테이블 생성이 안되더군요..
그래서 varchar2로 생성하였더니 로그인 하는 과정에서
PreparedStatementCallback; uncategorized SQLException for SQL [SELECT USER_ID, PASSWORD, ENABLED, USER_NAME FROM USERS WHERE USER_ID = ?]; SQL state [null]; error code [17059]; 내부 표기로 변환할 수 없습니다; nested exception is java.sql.SQLException: 내부 표기로 변환할 수 없습니다; nested exception is org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT USER_ID, PASSWORD, ENABLED, USER_NAME FROM USERS WHERE USER_ID = ?]; SQL state [null]; error code [17059]; 내부 표기로 변환할 수 없습니다; nested exception is java.sql.SQLException: 내부 표기로 변환할 수 없습니다
위와 같은 오류가 발생하더군요.
아마 spring securty 내부의 클래스가 users-by-username-query 의 결과를 객체화시키는 부분에서 해당 enabled 컬럼이 값이 boolean 값으로 리턴되지 않아서 발생하는게 아닐까 싶은데..
(표준프레임워크의 egovframework.rte.cmmn.security.EgovUserDetailsMapping 같은 역할을 담당하는?)
해결방법이 있을까요?
마땅히 질문할 곳이 없어 문의드립니다.
오픈커뮤니티 spring-security 편 영상을 보면서 테스트 중인데요
<authentication-provider user-service-ref="jdbcUserService">
<password-encoder hash="sha-256" />
</authentication-provider>
<jdbc-user-service id="jdbcUserService" data-source-ref="dataSource"
users-by-username-query="SELECT USER_ID, PASSWORD, ENABLED, USER_NAME FROM USERS WHERE USER_ID = ?"
authorities-by-username-query="SELECT USER_ID, AUTHORITY FROM AUTHORITIES WHERE USER_ID = ?" />
위와 같이 spring-security 설정 후
create table users (
user_id varchar(20) not null primary key,
password varchar(50) not null,
enabled boolean not null,
user_name varchar(50) not null
);
오라클에서 테이블을 생성하려 하니 enabled 컬럼이 boolean 타입으로 테이블 생성이 안되더군요..
그래서 varchar2로 생성하였더니 로그인 하는 과정에서
PreparedStatementCallback; uncategorized SQLException for SQL [SELECT USER_ID, PASSWORD, ENABLED, USER_NAME FROM USERS WHERE USER_ID = ?]; SQL state [null]; error code [17059]; 내부 표기로 변환할 수 없습니다; nested exception is java.sql.SQLException: 내부 표기로 변환할 수 없습니다; nested exception is org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT USER_ID, PASSWORD, ENABLED, USER_NAME FROM USERS WHERE USER_ID = ?]; SQL state [null]; error code [17059]; 내부 표기로 변환할 수 없습니다; nested exception is java.sql.SQLException: 내부 표기로 변환할 수 없습니다
위와 같은 오류가 발생하더군요.
아마 spring securty 내부의 클래스가 users-by-username-query 의 결과를 객체화시키는 부분에서 해당 enabled 컬럼이 값이 boolean 값으로 리턴되지 않아서 발생하는게 아닐까 싶은데..
(표준프레임워크의 egovframework.rte.cmmn.security.EgovUserDetailsMapping 같은 역할을 담당하는?)
해결방법이 있을까요?
A
안녕하세요. 장호형님.
CHAR(1 BYTE)로 정의하시면 되실 것 같습니다. "1"이면 true, "0"이면 false로 처리됩니다.
그럼, 즐거운 하루되십시오.
감사합니다.
CHAR(1 BYTE)로 정의하시면 되실 것 같습니다. "1"이면 true, "0"이면 false로 처리됩니다.
그럼, 즐거운 하루되십시오.
감사합니다.