context-security.xml 질문
- 작성자 :
- 한*완
- 작성일 :
- 2011-07-26 11:53:45
- 조회수 :
- 2,410
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요. LoginController에서 로그인 처리 후 redirect:/j_spring_security_check로 아이디와 비밀번호를 파라미터로 보내주었습니다.
그 다음 context-security.xml에서 authentication-failure-url로 바로 넘어가게 되네요
usersByUsernameQuery에 넣어준 쿼리에서도 값은 잘 받아옵니다.
여기서 에러가 아래와 같이 나왔습니다.
authorities테이블이 없다고 그러는데 공통컴퍼넌트 테이블생성 스크립트에서도 이 테이블이 없네요.. 무엇이 잘못되었을까요....
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Fetching JDBC Connection from DataSource
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Returning JDBC Connection to DataSource
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.support.SQLErrorCodesFactory] Database product name cached for DataSource [org.apache.commons.dbcp.BasicDataSource@33c78b]: name is 'Oracle'
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.support.SQLErrorCodesFactory] SQL error codes for 'Oracle' found
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator] Translating SQLException with SQL state '42000', error code '942', message [ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
]; SQL was [SELECT username,authority FROM authorities WHERE username = ?] for task [PreparedStatementCallback]
2011-07-26 10:47:02,453 DEBUG [org.springframework.security.ui.webapp.AuthenticationProcessingFilter] Updated SecurityContextHolder to contain null Authentication
2011-07-26 10:47:02,453 DEBUG [org.springframework.security.ui.webapp.AuthenticationProcessingFilter] Authentication request failed: org.springframework.security.AuthenticationServiceException: PreparedStatementCallback; bad SQL grammar [SELECT username,authority FROM authorities WHERE username = ?]; nested exception is java.sql.SQLException: ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT username,authority FROM authorities WHERE username = ?]; nested exception is java.sql.SQLException: ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
그 다음 context-security.xml에서 authentication-failure-url로 바로 넘어가게 되네요
usersByUsernameQuery에 넣어준 쿼리에서도 값은 잘 받아옵니다.
여기서 에러가 아래와 같이 나왔습니다.
authorities테이블이 없다고 그러는데 공통컴퍼넌트 테이블생성 스크립트에서도 이 테이블이 없네요.. 무엇이 잘못되었을까요....
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Fetching JDBC Connection from DataSource
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Returning JDBC Connection to DataSource
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.support.SQLErrorCodesFactory] Database product name cached for DataSource [org.apache.commons.dbcp.BasicDataSource@33c78b]: name is 'Oracle'
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.support.SQLErrorCodesFactory] SQL error codes for 'Oracle' found
2011-07-26 10:47:02,453 DEBUG [org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator] Translating SQLException with SQL state '42000', error code '942', message [ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
]; SQL was [SELECT username,authority FROM authorities WHERE username = ?] for task [PreparedStatementCallback]
2011-07-26 10:47:02,453 DEBUG [org.springframework.security.ui.webapp.AuthenticationProcessingFilter] Updated SecurityContextHolder to contain null Authentication
2011-07-26 10:47:02,453 DEBUG [org.springframework.security.ui.webapp.AuthenticationProcessingFilter] Authentication request failed: org.springframework.security.AuthenticationServiceException: PreparedStatementCallback; bad SQL grammar [SELECT username,authority FROM authorities WHERE username = ?]; nested exception is java.sql.SQLException: ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT username,authority FROM authorities WHERE username = ?]; nested exception is java.sql.SQLException: ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
A
안녕하세요.. 한기완님..
해당 query는 context-security.xml 중..
authoritiesByUsernameQuery로 지정된 query입니다.
usersByUsernameQuery는 사용자 인증을 위한 query이고..
이 query는 사용자가 가지고 있는 ROLE 목록을 얻기 위한 query입니다.
이 ROLE들을 기반으로 접근할 수 있는 URL들이 결정됩니다.
공통컴포넌트 부분에 다음과 같이 적용되어 있습니다.
<b:property name="authoritiesByUsernameQuery" value="SELECT A.SCRTY_ESTBSTRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_ESTBSTRGET_ID = B.UNIQ_ID AND B.USER_ID = ? "/>
현재 올려주신 로그상에는 실행환경 기반의 설정이 되어 있는 것 같습니다.
위 공통컴포넌트 부분으로 변경하시면 되실 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
해당 query는 context-security.xml 중..
authoritiesByUsernameQuery로 지정된 query입니다.
usersByUsernameQuery는 사용자 인증을 위한 query이고..
이 query는 사용자가 가지고 있는 ROLE 목록을 얻기 위한 query입니다.
이 ROLE들을 기반으로 접근할 수 있는 URL들이 결정됩니다.
공통컴포넌트 부분에 다음과 같이 적용되어 있습니다.
<b:property name="authoritiesByUsernameQuery" value="SELECT A.SCRTY_ESTBSTRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_ESTBSTRGET_ID = B.UNIQ_ID AND B.USER_ID = ? "/>
현재 올려주신 로그상에는 실행환경 기반의 설정이 되어 있는 것 같습니다.
위 공통컴포넌트 부분으로 변경하시면 되실 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.