2010-12-16 2 views
5

У моего клиента есть сайт, работающий на CodeIgniter (я его не создал и мало знаю о CI), и они хотели бы добавить функцию потерянного пароля, и я не знаю, как подойти к реализации этой функции, используя CI. Я знаю PHP с большей частью моего опыта работы с WordPress.CodeIgniter: функция потерянного пароля, как реализовать?

Может ли кто-нибудь указать мне в правильном направлении относительно лучших практик для реализации такого рода вещей?

+2

Он будет работать точно так же, как в CI. Только вы структурируете его в архитектуре MVC, которую использует CI. Насколько я знаю, нет никаких общих модулей восстановления пароля CI. – DampeS8N 2010-12-16 13:26:32

ответ

14

Это, как я бы реализовать:

  • пользователь нажимает на ссылку «Забыли пароль» типы
  • пользователя в его/ее адрес электронной почты
  • Вы положили случайный ключ и временный пароль в таблице пользователя
  • Вы отправляете электронное письмо со ссылкой для активации установленного вами пароля. Ссылка имеет случайный ключ
  • Пользователь нажимает на ссылку. Ссылка должна соответствовать случайной строки
  • активировать пароль и удалить временный пароль и случайную строку
  • входа пользователя в систему и изменяет свой пароль к чему-то, что он хочет

CI является PHP, так что вы хотите просто реализуйте его так же, как и в других проектах PHP, за исключением того, что вы будете делать в контроллерах/моделях/представлениях.

3

Хороший способ ИМХО это:

  • Если пользователь забыл свой PWD, он потребует нового PWD. На этом этапе вы должны сохранить хэш и временную метку в db
  • Отправлять электронное письмо пользователю, содержащему ссылку на сайт сброса с его хешем, хранящимся в db как get-param (например, example.de/reset-pw/[пользовательский хэш здесь])
  • Если пользователь следует этой ссылке, сайт проверяет прошедшее время между запросом и использованием этой ссылки (большинство сайтов допускают разницу во времени около одного дня)
  • если каждый из них действителен, пользователь может введите новый pw

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

2

CodeIgniter - это обычная инфраструктура php, которая следует за шаблоном MVC.

У него нет встроенной библиотеки auth.

Вам нужно будет использовать некоторую стороннюю библиотеку. Один из лучших - Ion-auth. https://github.com/benedmunds/CodeIgniter-Ion-Auth

Howewer - если это уже существующий сайт, на котором люди могут зарегистрироваться - скорее всего, уже существует некоторая библиотека auth. Я бы посмотрел в папке system/application/libraries (или иногда/application/libraries), чтобы увидеть, какие библиотеки там, и оттуда.

Смежные вопросы