В приложении используется Spring, и секьюрити сделано с помощью Acegi. Как сделать логин пользователя, разобрался. Хочу испльзовать хеширование паролей с зависимым от пользователя ключевым словом (salt). Поэтому при регистрации пользователя вручную, с помощью бина passwordEncoder хеширую пароль по e-mail пользователя.
Выдержка из объявления енкодера пароля:
| Код | <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"/>
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="usersDao"/> <property name="passwordEncoder" ref="passwordEncoder"> </property> <property name="saltSource"> <bean class="org.acegisecurity.providers.dao.salt.ReflectionSaltSource"> <property name="userPropertyToUse" value="email"/> </bean> </property> </bean>
|
| Код | String encodedPassword = passwordEncoder.encodePassword(user.getPassword(), user.getEmail()); user.setPassword(encodedPassword); getHibernateTemplate().saveOrUpdate(user);
|
С использованием данного подхода залогиниться не удается. Но при использовании общего для всех пользователей salt все работает отлично. Почему может не работать уникальный для пользователя salt? |