Реализация “Помнит меня” в приложении направляющих

Обычно я использую этот класс для своей работы. Его очень хорошо.

.transparent {
  filter: alpha(opacity=50); /* internet explorer */
  -khtml-opacity: 0.5;      /* khtml, old safari */
  -moz-opacity: 0.5;       /* mozilla, netscape */
  opacity: 0.5;           /* fx, safari, opera */
}

52
задан CoderCroc 21 December 2016 в 17:54
поделиться

7 ответов

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

Вот то, что я сделал:

  • Сеансовые куки установлены быть долговечными (приблизительно 6 месяцев)
  • Внутренняя часть, хранилище сессии
    • 'истекает в' дату, которая назначена для входа в систему + 24 часа
    • идентификатор пользователя
    • , Аутентифицируемый = верный, таким образом, я могу допускать сессии анонимного пользователя (не опасный из-за защиты трамбовки cookie)
  • , я добавляю before_filter в Контроллере Приложения, который проверяет, 'истекает на' части сессии.

, Когда пользователь устанавливает флажок "Remember Me", я просто установил сессию [: expireson] дата, чтобы быть входом в систему + 2 недели. Никто не может украсть cookie и остаться, вошел в систему навсегда или подмена как другой пользователь, потому что сеансовые куки направляющих защищены от несанкционированного использования.

12
ответ дан Daniel Beardsley 7 November 2019 в 09:30
поделиться

Вы не должны почти наверняка расширять сеансовые куки, чтобы быть долговечными.

, Хотя не имея дело конкретно с направляющими эта статья переходит к некоторой длине для объяснения, 'помнят меня' лучшие практики.

, Таким образом, хотя Вы должны:

  • Добавляют дополнительный столбец к пользовательской таблице для принятия большого случайного значения
  • Набор долговечный cookie на клиенте, который комбинирует идентификатор пользователя и случайное значение
  • , Когда новая сессия запускается, проверьте на существование cookie идентификатора/значения и аутентифицируйте нового пользователя, если они соответствуют.

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

Как заключительное примечание, совет он дает при создании определенных функций (изменение пароля/, почтовое изменение и т.д.) недоступный к автоматическим аутентифицируемым сессиям определенно стоит следующего, но редко замечаемый в реальном мире.

28
ответ дан Gareth Simpson 7 November 2019 в 09:30
поделиться

Я предложил бы, чтобы Вы или смотрели на RESTful_Authentication, включают, который имеет реализацию этого, или просто переключите свою реализацию для использования УСПОКОИТЕЛЬНОГО Authentication_plugin. Существует хорошее объяснение о том, как использовать, это включает в Railscasts:

railscasts № 67 restful_authentication

Здесь является ссылкой на сам плагин

restful_authentication

10
ответ дан 2 revs, 2 users 82% 7 November 2019 в 09:30
поделиться

restful_authentication плагин имеет хорошую реализацию этого:

http://agilewebdevelopment.com/plugins/restful_authentication

5
ответ дан Jarin Udom 7 November 2019 в 09:30
поделиться

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

4
ответ дан Teflon Ted 7 November 2019 в 09:30
поделиться

Это - довольно хорошая рецензия одного опыта парней создания 30-дневных персистентных сессий.

ПРЕДУПРЕЖДЕНИЕ: сообщение в блоге с 2006

http://grahamglass.blogs.com/main/2006/05/rails_sessionsr.html

4
ответ дан Dan Rosenstark 7 November 2019 в 09:30
поделиться

Это работало как очарование на меня:

http://squarewheel.wordpress.com/2007/11/03/session-cookie-expiration-time-in-rails/

Теперь мои сессии CookieStore истекают после двух недель, посредством чего пользователь должен отправить их данные для входа в систему снова для персистентного входа в течение еще двух недель.

Bascially, это столь же просто как:

  1. включая один файл в каталоге
  2. поставщика/плагинов устанавливает значение истечения сессии в контроллере приложения, использующем всего одну строку
3
ответ дан Allan L. 7 November 2019 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: