2011-07-07 3 views
0

Я знаю, что существует множество драгоценных камней, доступных для полной аутентификации в Ruby on Rails.Rails Полная аутентификация с нуля

Но в моем случае мне нужно будет реализовать его с нуля. Есть много учебников, которые показывают, как реализовать аутентификацию в Rails, но ни один из них не покрывает много других важных частей, как:

1] Отслеживание последнего входа и текущего входа в метку времени.

2] Ведение подсчета количества успешных логинов для пользователя.

3] Отслеживание неудачных попыток входа в систему и блокировка пользователя после определенного количества неудачных попыток. (мы не будем рассылать электронные письма, чтобы разблокировать учетную запись. Это связано с тем, что пользователь будет звонить, проверять свою личность, а затем лицо на телефоне разблокирует учетную запись, сбросив флаг. Пожалуйста, предложите, есть ли другая лучшая альтернатива .)

4] Запомни мне функциональность.

Заранее благодарим за помощь!

+0

Возможно, вам сложно создать полный подлинник с нуля, если вы не знаете, как добавить общий счет входа в систему и отметьте метку времени в пользовательской модели. – user482594

+0

, и я думаю, что они не покрывают это, потому что они очень тривиальны. Легко реализовать. – user482594

+0

Я знаю, что это тривиально. Но я ищу советы по «безопасности». Благодаря! –

ответ

1

1] Добавьте две метки времени в таблицу для отслеживания этих параметров: last_login_time и current_login_time. Когда пользователь Войти last_login_time = current_login_time и current_login_time = Time.now

2] Добавить logins_count поле к вам стол и увеличить его на каждом входе

3] 3,1 Добавить поле fails_count и увеличивать его каждый раз, когда Войти неудачными и сброс на успех входа 3,2 добавьте логическое поле «заблокировано» и установите его в true, если fails_count равно некоторому числу

+0

Спасибо, Владимир. Это именно то, что я искал. –

2

Я думаю, что ловушка для всех самопровозглашенных «новичков» заключается в том, что они всегда хотят строить все с нуля! = P

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

Я бы рекомендовал проверить Devise (https://github.com/plataformatec/devise), это тот, который я использую в своих проектах. Если он не предоставляет вам большую часть ваших функций из коробки, почти тривиально добавить его, изменив контроллер регистрации. Опять же, если он недоступен из коробки, общий подход будет - Добавить last_login, current_login, login_count, failed_attempts в вашу модель пользователя. - Переопределите контроллер регистрации разработки и убедитесь, что все эти значения обновляются, когда вы хотите.

Заметки Anther, Devise предоставляет функциональные возможности для восстановления паролей по электронной почте, но вы можете легко отключить это, чтобы заставить ваших пользователей с помощью call-in/verify.

Еще одна точка входа для вас - новый Rails 3.1 (официально не выпущенный). Но было включено много обновлений, которые помогут вам создать более совершенные системы аутентификации. Посмотрите этот railscast для получения дополнительной информации: http://railscasts.com/episodes/270-authentication-in-rails-3-1

+0

Дэвид, Спасибо за ваш ответ. Это, безусловно, заставит меня идти. –

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