【发布时间】:2012-06-11 15:28:57
【问题描述】:
我正在使用 Spring Security 3。我有自己的身份验证提供程序。
这是我目前所拥有的:
security-app-context.xml
<authentication-manager>
<authentication-provider user-service-ref="detailsService" />
</authentication-manager>
<beans:bean id="loginSuccessHandler" class="com.myapp.security.LoginSuccessHandler" />
<beans:bean id="loginFailureHandler" class="com.myapp.security.LoginFailureHandler" />
<beans:bean id="detailsService" class="com.myapp.security.UserDetailService" />
用户详细信息服务
public class UserDetailService implements UserDetailsService {
private DataSource dataSource;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
String hql = "from Users where username = :username";
List<Users> list = null;
try {
IO io = new IO("common_web");
IOQuery query = new IOQuery();
query.setStatement(hql);
query.setParameter(new IOParameter("username", username));
list = io.runQuery(query);
if (list.isEmpty()) {
return null;
}
} catch (Exception ex) {
ex.printStackTrace();
}
// THIS WORKS. I HAVE A VALID USER FROM DB
return (UserDetails) list.get(0);
}
}
此代码只是一个简单的示例。在“// THIS WORKS...”这一点上,我确实有来自我们数据库的Users 记录。但是当我返回这个对象时,我仍然没有通过身份验证。
请注意,Users 是一个 Hibernate 表对象。
我错过了什么?
【问题讨论】:
标签: hibernate authentication spring-mvc spring-security