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" />
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 テーブル オブジェクトであることに注意してください。
私は何が欠けていますか?