views:

545

answers:

1

I'm curious about the UserDetailsManager interface. It's not mentioned in the reference guide and in the JavaDoc it's described as:

An extension of the UserDetailsService which provides the ability to create new users and update existing ones.

When implementing the UserDetailsManager interface you have to implement five methods of its own and one which it inherits from the UserDetailsService which it extends.

These methods are: createUser, updateUser, deleteUser, changePassword, userExists and the inherited method loadUserByUsername.

In the Spring Security framework v2.0.4 there are two concrete implementations of UserDetailsManager: JdbcUserDetailsManager and LdapUserDetailsManager.

Both the interface and the concrete implementations are implemented by Luke Taylor.

It seems the Spring Security framework never uses the concrete implementations.

My conclusion is that the interface is included purely as a convenience interface which the user of the framework may or may not decide to use. Perhaps there were some thought that later on more concrete implementations would exist and take out some of the work for the framework users?

What I'm looking for is more information. For the information to be of value it has to come directly or indirectly (I guess this is most likely) from someone with insight into the framework development process. Anyone else can just make guesses, like I just did above.

If it's just a convenience interface. Are there more such interfaces and classes which doesn't appear in the reference guide as well? I'm interested in knowing as it might be helpful to me during development.

Looking through all interfaces and classes to see which ones are actually used inside the framework is a bit tideous and it could also be error prone if reflection is involved (so calls are made which my IDE can't figure out).

+2  A: 

Your guess is correct. According to the original feature request it was added "since it's quite a commonly requested feature and is reasonably straightforward to achieve by extending existing interfaces and classes."

There has been talk of creating a separate project to fill this interface out, but that has not taken hold yet.

eqbridges