Вроде все шаги штатные:
1) Нажали "Забыли пароль"
2) Получили письмо
3) Прошли по ссылке
4) Прописали новый пароль
А зачастую получают "Контрольная строка не верна".
Я не рассматриваю вариации, когда запрос сделали давно и срок действия контрольной строки истек.
[spoiler]
Проблема кроется в том, что стандартный почтовый шаблон передает в письме логин, на который осуществляется попытка восстановления, а браузер при открытии пытается из cookies прочесть логин, по которому была последняя авторизация. А это зачастую разные логины! Поэтому и получается, что строка принадлежит совершенное другому логину.
Самое забавное, что стандартный системный компонент 1С-Битрикс умеет в запросе получать информацию о логине, по которому пытаются восстановить пароль пользователи.
Но почему-то в стандартный почтовый шаблон не введена информация для передачи.
Итак, как решить эту проблему:
1) В административной части сайта входим в Настройки -> Настройки продукта -> Почтовые события -> Почтовые шаблоны ( http://ваш_сайт/bitrix/admin/message_admin.php?lang=ru )
2) Находим и редактируем шаблон с "Типом почтового события" равным "[USER_PASS_REQUEST] Запрос на смену пароля"
3) Меняем строку
http://#SERVER_NAME#/auth.php?change_password=yes&USER_CHECKWORD=#CHECKWORD# |
http://#SERVER_NAME#/auth.php?change_password=yes&USER_CHECKWORD=#CHECKWORD#&USER_LOGIN=#LOGIN# |