2015-01-21 136 views
0

第二年春天的安全上下文:为什么不是loadUserByUserName调用?

<security:http auto-config="true" use-expressions="true"> 
    <security:access-denied-handler error-page="/403" /> 
    <security:intercept-url pattern="/admin/**" access="hasRole('ADMIN')" /> 
    <security:form-login login-page="/" username-parameter="user" password-parameter="pass" login-processing-url="/" default-target-url="/admin"/> 
</security:http> 

<security:authentication-manager> 
    <security:authentication-provider> 
     <security:jdbc-user-service data-source-ref="xaDataSource" 
     authorities-by-username-query="select name, role from users where name = ?" 
     users-by-username-query="select name, password, enabled from users_auth where name = ?" /> 
    </security:authentication-provider> 
</security:authentication-manager> 

中的index.jsp里面我有以下形式:

<body> 
<h2>Hello, dear user</h2> 
<form id="login" method="POST"> 
<!-- <label for="user">User: <label/> --> 
    <input type="text" name="user" /><br/> 
<!-- <label for="password">Passowrd: <label/> --> 
    <input type="text" name="pass" /><br/> 
    <input type="submit" value="login"> 
</body> 

的问题是点击提交按钮403页面之后被渲染。为什么?我在调试器下检查了org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl,并且都没有调用loadUserByUsername(String username), loadUsersByUsername(String username), loadUserAuthorities(String username), loadGroupAuthorities(String username)。追随者web.xml

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/coreContext.xml /WEB-INF/securityContext.xml</param-value> 
    </context-param> 

    <!-- servlets --> 

    <filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

怎么了?

回答

1

尝试......

您的安全使用页面定义:

登录页= “/”

index.jsp的形式给出,并有不采取任何行动。

尝试:

改变安全上下文login-page=/index.jsp

并尝试改变形式也使用action=/index.jsp

不要指定authentication-failure-url,只是为了检查它的调用。

查看示例here