eGovFrame 표준프레임워크 포털

메뉴 건너띄기
상단메뉴 바로가기
본문 바로가기

이 누리집은 대한민국 공식 전자정부 누리집입니다.

본문 영역

적용 지원, FAQ, Q&A 게시판을 통해 기술 문제 해결을 지원합니다.

묻고 답하기

context-security.xml 질문
  • 작성자

    한*완

  • 작성일

    2011-07-26 11:53:45

  • 조회수

    2,885

  • 구분

    공통컴포넌트

  • 진행상태

    완료

질문

안녕하세요. 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: 테이블 또는 뷰가 존재하지 않습니다

답변

안녕하세요.. 한기완님..

해당 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 = ? "/>

현재 올려주신 로그상에는 실행환경 기반의 설정이 되어 있는 것 같습니다.
위 공통컴포넌트 부분으로 변경하시면 되실 것 같습니다.

그럼.. 즐거운 하루되십시오.
감사합니다.

이 페이지의 구성

묻고 답하기