我已经写信给以下课程:
PncUserDetailsAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider
它实现了recieveUser 方法:
@Override
protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken token) throws AuthenticationException {
try {
server = (PncUtilRemote) new InitialContext().lookup("PncUtilBean");
if (server != null) {
String password = SHA1(token.getCredentials().toString());
String[] auth = server.login(username, password);
if (auth.length > 0) {
PncUserDetails details = new PncUserDetails(username, password);
for (int i = 0; i < auth.length; i++) {
details.addAuthority(auth[i]);
}
return details;
}
}
} catch (Exception e) {
System.out.println("! " + e.getClass().getName() + " in com.logica.pnc.security.PncUserDetailsAuthenticationProvider.retrieveUser(String, UsernamePasswordAuthenticationToken): " + e.getMessage());
}
throw new BadCredentialsException("");
}
要启用 AuthenticationProvider,您需要在 application-context.xml 文件中添加一些行:
<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
<property name="providers">
<list><ref local="PncAuthenticationProvider" /></list>
</属性>
</豆>
<bean id="PncAuthenticationProvider" class="com.logica.pnc.security.PncUserDetailsAuthenticationProvider">
<security:custom-authentication-provider />
</豆>
将自动配置设置为 false 很重要:
<security:http auto-config="false" />
感谢 rodrigoap 指向 AuthenticationProvider 东西 :)