4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
1 | |
Востановление пароля юзера08.12.2016, 15:06. Показов 3366. Ответов 15
Метки нет (Все метки)
Добрый день.
SpringMVC, Hibernate и тд. Пытаюсь сделать восстановление пароля зарегистрированного юзера. В базе хранится пароль в виде хеша $2a$10$/74cmg7qU9RWH/zHtmMqUebKk9XV60ZlciSa7m733ADkoDrYtOy.2 Т.е. как я понял отправить его пользователю не могу, т.к. не могу перевести обратно в нормальный вид. Поэтому на запрос от юзера на смену пароля отправляю ему на почту сылку типа ttp://localhost:8080/acceptRememberPass?pass=$2a$10$/74cmg7qU9RWH/zHtmMqUebKk9XV60ZlciSa7m733ADkoDrYtOy.2&email=mail@mail.ru Пройдя по которой он попадает в контролер, где я проверяю на соответствие в базе данному емейлу пароля. Если все ок, то выдаю страницу JSP на смену. Правильно ли я делаю? Как лучше и правильно сделать?
0
|
08.12.2016, 15:06 | |
Ответы с готовыми решениями:
15
Востановление пароля юзера востановление пароля по мылу не проходит Востановление забытого пароля или... Востановление пароля к QIP 2012 |
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
08.12.2016, 15:34 | 2 |
нет. Зачем вы хеш старого пароля и меил отправляете в ссылке? Это security leak. На запрос о ресете пароля, генерируйте токен и шлите этот токен. Примерно так
http://localhost:8080/resetPas... jsdf234lkj токен должен быть действительным короткое время. После того как на jsp странице юзер введет новый пароль, шлите запрос на сервер с тем же токеном и выставляйте там новый пароль. После этого инвалидируйте\стирайте токен
1
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|||||||||||
10.12.2016, 13:41 [ТС] | 3 | ||||||||||
чет не очень понимаю как все это делается...
как я понял, поправьте если что... 1) нужно создать репозиторий токенов, я делаю бин и в базе соответсвующую таблицу
*получаю пользователя по емейлу из базы. *для этого пользователя создаю в токен
4) на контролере http://localhost:8080/resetPassword? ловлю токен, идентифицирую пользователя и выдаю страницу для смены пароля так?
0
|
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
10.12.2016, 14:09 | 4 |
нет особой надобности. Токен можно добавить как поле в таблицу юзеров
откуда у вас взялся PersistentRememberMeToken? Причем он тут? посылайте сразу на страницу. Контроллер в данном случае ненужен. На контроллер посылайте сабмит формы смены пароля.
0
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
10.12.2016, 15:04 [ТС] | 5 |
я думал это как то связано со спринговcким remember-me. Подскажи, плиз, что почитать?
0
|
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
10.12.2016, 15:54 | 6 |
werrt, не связан. Читать хз о чем там читать. Просто пойдите и посмотрите как везде работает сброс пароля.
0
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
10.12.2016, 16:02 [ТС] | 7 |
что то типа ?
http://www.liveinternet.ru/com... 386074372/
0
|
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
10.12.2016, 18:12 | 8 |
werrt, а вы как думаете? В этой статье есть хоть слово о несете пароля?
0
|
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
|
|
11.12.2016, 19:43 | 9 |
Сообщение было отмечено werrt как решение
Решение
мы делали так:
- делается отельная таблица типа (id пользователя, токен, дата создания) - был таск, который периодически чистил таблицу в соответствии со значением срока валидности токена - при запросе сброса пароля пользователю на мыло высылалась ссылка тапа .../resetPassword?token=... - на сервере по токену доставали запись из таблицы, проверяли время валидности и если все ок, то авторизовывали пользователя с ролью ROLE_RESET_PASSWORD, при этом пользователю доступна только страница сброса пароля, где он вводит новый и подтверждение - после того как пользователь сабмитит новый пароль с подтверждением делается запрос на api типа .../newPassword, который тоже доступен только для ROLE_RESET_PASSWORD - на сервере проверяется что пароль совпадает с подтверждением и пароль сохраняется для текущего пользователя - на последнем шаге делается автоматическая авторизация пользователя с его правами учетной записи
1
|
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
14.12.2016, 00:12 | 11 |
werrt, шаг авторизации можете смело пропустить и открыть страницу для всех. Это никак не повлияет не защиту.
0
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|||||||||||
14.12.2016, 01:21 [ТС] | 12 | ||||||||||
KEKCoGEN, ну на будущее всеже интересно, напримерп автоматическая авторизация по токену
я пытаюсь сделать так:
------------------------------------------------------------------------------------------------------------ пытался делать как я понял фразу " посылайте сразу на страницу. Контроллер в данном случае ненужен. На контроллер посылайте сабмит формы смены пароля" по токену ....reset?token=dwkhddhwkdhwhdwodh/
Чет я запутался совсем
0
|
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
|
|
14.12.2016, 09:12 | 13 |
werrt, делай как я описал, через временную авторизацию
это роли пользователя. если ролевая модель не описана - передавай пустой список или же, если есть роли, передавай список SimpleGrantedAuthority, которые создаваться должны через конструктор с 1 параметром - именем роли (на сколько я помню без префикса ROLE_, но могу ошибаться)
0
|
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
14.12.2016, 09:43 | 14 |
0
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
||||||
14.12.2016, 14:28 [ТС] | 15 | |||||
путем подбора получилось логинить пользователя так:
userDetailsService- моя имплементация.
0
|
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
|
|
15.12.2016, 09:06 | 16 |
да, только про роли не забывай
пользователю, авторизованному по токену, нужно ограничивать права только на смену пароля
1
|
15.12.2016, 09:06 | |
15.12.2016, 09:06 | |
Помогаю со студенческими работами здесь
16
После ввода логина\пароля, как отобразить задачи только залогиненного юзера, вместо всех задач всех юзеров? Насколько точно скрипт в примере определит IP адрес юзера, агент юзера? Загрузка изображения для профиля юзера в одном контроллере с загрузкой данных юзера Как добавить в DirectoryEdit1.Text путь к папке юзера, если имя юзера кириллицей? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |