2015-08-19 5 views
1

Я узнал, как хэш пароля некоторых одной и сохраняются в базе данных с SpringMVC:Как проверить пароль с Spring

BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); 
String pw = passwordEncoder.encode("test"); 

Теперь вопрос, как я могу проверить пароль исходя из запрос, чтобы позволить пользователю войти в мое веб-приложение? После некоторых исследований я увидел, что есть много способов сделать это. Некоторые решения работают с ролями пользователей.

Что должны делать мои webapps, так это предложить моим пользователям страницу входа, где они могут зарегистрироваться (здесь я бы сохранил пароль с приведенным выше кодом). После регистрации они должны иметь возможность входа в систему, что означает, что мне нужно подтвердить пароль из формы входа. Есть ли какой-нибудь современный пример?

+0

использование spring-security http://projects.spring.io/spring-security/ – smoggers

+1

Но пример работает только с определенным пользователем и паролем. Но у моего webapp может быть 100 пользователей, поэтому authprovider нужно как-то извлечь из базы данных. – user3481997

ответ

0

Чтобы проверить, что пользователь вводит правильный пароль, используйте один и тот же односторонний хэш против их введенного значения, а затем сравните его с ранее измененным значением - если они совпадают, то введенный пароль верен.

+0

Как вы это понимаете? У вас есть пример кода? – user3481997

+0

Вы используете тот же код, который вы уже использовали для хеширования пароля в первый раз, когда пользователь создал свой идентификатор пользователя/пароль. С односторонним хешем вы не расшифровываете сохраненный пароль, вы вводите введенное значение и сравниваете его с уже сохраненным хешированным значением. Если они совпадают, введенный пароль верен. –

+0

Да, он должен работать со многими шифровальщиками, но не в случаях «BCryptPasswordEncoder», как я и пытался. – Sanjay

0

Аутентификация и авторизация не являются простыми задачами в веб-приложениях.

У весны есть система безопасности, которая поможет в этом, однако ее не просто использовать.

Я рекомендую вам оценить работу системы безопасности Apache Shiro (доступной через веб-сайт ASF), которая делает наилучшую работу по упрощению безопасности для Spring и Java EE.

http://shiro.apache.org/

имеет абстракций, которые позволяют проверить подлинность из пользовательского магазина информации пользователя. Существует ряд онлайн-коротких проверок аутентификации с использованием Shiro, которые помогут вам.

5

Это как сырой пароль может быть согласован с кодированными один:

passwordEncoder.matches("rawPassword", user.getPassword()), 

Но, как говорят другие, кодирование безопасности самостоятельно громоздко, и поэтому я бы рекомендовал использовать Spring Security вместо. Да, это требует усилий, чтобы учиться, но вы можете найти на нем хорошие учебные пособия. Here - это уникальный учебник по этому вопросу (отказ от ответственности: я автор).