2013-02-19 175 views
1

我得到了我的查詢問題,但我不知道是什麼原因造成,所以我需要你的幫助=)春季安全:JDBC用戶查詢,PreparedStatementCallback

我有以下異常:

PreparedStatementCallback;錯誤的SQL語法[選擇USERNAME作爲用戶名,PASSWORD作爲密碼,來自ams.user其中USERNAME =?];嵌套異常是com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL語法中有錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「從ams.user其中username =」管理員「」在1號線

這裏是我的login.jsp:

<div class="box"> 

    <h1><spring:message code="login.description" /></h1> 
    <br/> 

    <form name='f' action="<c:url value='j_spring_security_check' />" method='POST'>      
     <ol> 
      <li> 
       <label><spring:message code="user.user" />:</label> 
       <em><img src="images/star_red.png" alt="required"></img></em> 
       <input type='text' name='j_username'> 
      </li> 
      <li> 
       <label><spring:message code="user.password" />:</label> 
       <em><img src="images/star_red.png" alt="required"></img></em> 
       <input type='password' name='j_password' /> 
      </li> 
      <li> 
       <label>&ensp;</label> 
       <input type='hidden' name='remember_me' id="remember_hidden" value="false"/> 
       <input type='checkbox' id='remember_checkbox' onchange="toggleRememberMe()" class="checkbox"/> 
       <spring:message code="login.remember" /> 
      </li> 
      <li> 
       <label>&ensp;</label> 
       <input type="submit" value="<spring:message code="login"/>"/> 
      </li> 
     </ol> 

     <br /> 
     <br /> 

    </form> 

    <c:if test="${not empty param.login_error}"> 
     <div class="error"> 
      <br /> 
      <spring:message code="login.error" /> 
      <br /> 
      <spring:message code="login.errorReason" />: 
      <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" /> 
     </div> 
    </c:if> 
</div> 

這裏的我的安全上下文代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:security="http://www.springframework.org/schema/security" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
       http://www.springframework.org/schema/security 
       http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 

    <!-- <security:http auto-config="true" access-decision-manager-ref="accessDecisionManager"> --> 
    <security:http auto-config="true"> 
     <security:intercept-url pattern="/login/login.do" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
     <security:intercept-url pattern="/login/doLogin.do" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
     <security:intercept-url pattern="/lib/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
     <security:intercept-url pattern="/css/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
     <security:intercept-url pattern="/images/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
     <security:intercept-url pattern="/resources/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
     <security:intercept-url pattern="/**" access="IS_AUTHENTICATED_REMEMBERED" /> 
     <security:form-login login-page="/login/login.do" authentication-failure-url="/login/login.do?login_error=true" default-target-url="/test/showTest.do"/> 
     <security:logout logout-success-url="/login/login.do" invalidate-session="true" /> 
     <security:remember-me key="rememberMe"/> 
    </security:http>  

    <security:authentication-manager> 
     <security:authentication-provider> 
      <security:jdbc-user-service data-source-ref="dataSource" 
      users-by-username-query="select USERNAME as username, PASSWORD as password, from ams.user where USERNAME=?" 
      authorities-by-username-query=" 
       select distinct user.USERNAME as username, permission.NAME as authority 
       from ams.user, ams.user_role, ams.role, ams.role_permission, ams.permission 
       where user.ID=user_role.USER_ID AND user_role.ROLE_ID=role_permission.ROLE_ID AND role_permission.PERMISSION_ID=permission.ID AND user.EMAIL=?"/> 
      <security:password-encoder ref="passwordEncoder" /> 
     </security:authentication-provider> 
    </security:authentication-manager> 

    <bean id="passwordEncoder" 
     class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"> 
     <constructor-arg value="256" /> 
    </bean> 
</beans> 

有沒有人有一個想法可能會導致此錯誤? 會很感激你的幫助,在這一個=)

回答

1

有一個在密碼後,SQL一個逗號,請從

select USERNAME as username, PASSWORD as password, from ams.user where USERNAME=? 

改變SQL來

select USERNAME as username, PASSWORD as password from ams.user where USERNAME=?