I exported all the data access code into an independent DAO that is still
managed by Spring. Then I added a constructor to my UserDetailsService that
took the dao plus the salt and encoder:


 private final static Logger LOG =
LoggerFactory.getLogger(UserDetailsServiceImpl.class);

private final Dao dao;

private final PasswordEncoder passwordEncoder;

private final SaltSource saltSource;

/**
 * Default constructor.
 */
 public UserDetailsServiceImpl(Dao dao, PasswordEncoder encoder, SaltSource
salt) {
dao = dao;
 passwordEncoder = encoder;
saltSource = salt;
}

/**
 * Try to find the given user in the local database.
 */
 public UserDetails loadUserByUsername(String username) throws
UsernameNotFoundException {
LOG.debug("Attempting to locate user with username \"{}\"", username);

User user = dao.findUserByUsername(username);

if (user != null) {
 // encode the password
user.setPassword(passwordEncoder.encodePassword(user.getPassword(),
saltSource.getSalt(user)));
 }

LOG.debug("Located user: {}", user);

 return new User(user);
}

Then updated my module to provide the dependencies:

public static UserDetailsService buildUserDetailsService(Dao dao, @Inject
PasswordEncoder encoder,
@Inject SaltSource salt) {
 return new UserDetailsServiceImpl(dao, encoder, salt);
}



On Thu, May 27, 2010 at 1:53 PM, Michael Gerzabek
<michael.gerza...@gmx.net>wrote:

> Just for the records. What did you change now?
>
> Am 27/05/2010 19:48, schrieb Todd Orr:
>
>  I changed the code so that these are injected and now it works. I cannot
>> describe how angry this makes me. Days wasted.
>>
>> Thanks for you help though!!!
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to