2017-10-19 1 views
0

봄 보안을 사용하고 싶습니다.하지만 SQLException이 발생합니다. 아직 해결책을 찾지 못했습니다.봄 보안 - 잘못된 열 인덱스 예외

내 테이블 구조 :

APP_USER (ID_APP_USER, NAME, PASSWORD)

APP_ROLE (ID_ROLE, NAME)

APP_USER_ROLE (ID_USER_ROLE, ID_USER, ID_ROLE)

내 봄 구성 파일 :

<!-- enable use-expressions --> 
<http auto-config="true" use-expressions="true"> 

    <intercept-url pattern="/admin**" access="hasRole('ROLE_ADMIN')" /> 

    <!-- access denied page --> 
    <access-denied-handler error-page="/403" /> 

    <form-login 
     login-page="/login" 
     default-target-url="/index" 
     authentication-failure-url="/login?error" 
     username-parameter="username" 
     password-parameter="password" /> 
    <logout logout-success-url="/login?logout" /> 
    <!-- enable csrf protection --> 
    <csrf/> 
</http> 

<!-- Select users and user_roles from database --> 
<authentication-manager> 
    <authentication-provider> 
    <jdbc-user-service data-source-ref="dataSource" 
     users-by-username-query= 
     "select name as username,password from app_user where name=?" 
     authorities-by-username-query= 
     "SELECT app_user.name as username, app_role.name as role 
      FROM app_user 
      INNER JOIN app_user_role ON app_user.id_app_user = app_user_role.id_user 
      INNER JOIN app_role ON app_user_role.id_role = app_role.id_role 
      WHERE app_user.name = ? " /> 
    </authentication-provider> 
</authentication-manager> 

그리고 나는 다음과 같은 오류 받고 있어요 :

20 : 36 : 55.281 [HTTP-NIO-8089-간부-10] 디버그 osjsSQLErrorCodeSQLExceptionTranslator - SQL 상태 '99999'로 번역되는 SQLException, 오류 코드 '17003', 메시지 [잘못된 열 인덱스]; [PreparedStatementCallback] 20 : 36 : 55.282 [http-nio-8089-exec-10] 작업에 대한 SQL [이름을 username, password에서 app_user로 선택 하시겠습니까?] DEBUG osswaUsernamePasswordAuthenticationFilter - 인증 요청 실패 : org.springframework. security.authentication.AuthenticationServiceException : PreparedStatementCallback; SQL에 대한 잘못된 ResultSet 액세스 [이름을 username으로 선택하고, app_user에서 비밀번호는 어디에 = 이름?]; 중첩 예외는 java.sql.SQLException입니다. 잘못된 열 인덱스 20 : 36 : 55.282 [http-nio-8089-exec-10] DEBUG osswaUsernamePasswordAuthenticationFilter - null을 포함하도록 SecurityContextHolder가 업데이트되었습니다. 20 : 36 : 55.282 [http-nio- 8089-exec-10] DEBUG osswaUsernamePasswordAuthenticationFilter - 인증 실패 핸들러로 위임하기 org.springframework.se[email protected]2f483b1e 20 : 36 : 55.282 [http-nio-8089-exec-10] DEBUG osswaSimpleUrlAuthenticationFailureHandler - 리디렉션 ? 36 : :/로그인 오류 20-55.282 [HTTP-NIO-8089-간부-10] DEBUG ossweb.DefaultRedirectStrategy가 -에 재 지정 '?/FNDWEB/로그인 오류'

무엇 틀렸어? 도와주세요 :/미리 감사드립니다.

답변

1

마지막으로 해결책을 찾았습니다. ", 1 활성화 된"을 Google의 검색어에 추가해야합니다.

<authentication-provider> 
    <jdbc-user-service data-source-ref="dataSource" 
     users-by-username-query= 
     "select name as username,password,1 as enabled from app_user where name=?" 
     authorities-by-username-query= 
     "SELECT app_user.name as username, app_role.name as role 
      FROM app_user 
      INNER JOIN app_user_role ON app_user.id_app_user = app_user_role.id_user 
      INNER JOIN app_role ON app_user_role.id_role = app_role.id_role 
      WHERE app_user.name = ? " /> 
    </authentication-provider>