Шаги, чтобы создать мою собственную систему аутентификации, нужно некоторое руководство - PullRequest
0 голосов
/ 27 октября 2010

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

  1. Я создам Модуль в моей папке / lib/lib/auth.rb
  2. Мне потребуется этот модуль в моем ApplicationController.
  3. когда пользователь вводит свою электронную почту + пароль, я вызову метод, который будет выполнять поиск в таблице пользователя.для пользователя с тем же адресом электронной почты я сравню пароли.(Я добавлю шифрование с солью позже).
  4. Если пользователь ввел правильные учетные данные, я создам строку в таблице Sessions, а затем запишу GUID сеанса в cookie.
  5. Теперь, когда мне нужно проверить, вошел ли пользователь в систему или мне нужен объект пользователя, я проверю, существует ли cookie, если он есть, я буду искать в таблице сеансов строку с таким же guid, если он существует., Я верну строку сеанса и затем загрузю объект User.

Я понимаю, что можно дать много предложений, но в двух словах это звучит как работоспособное решение?

Теперь, чтобы это можно было использовать, мне нужно будет создать несколько вспомогательных методов в моем ApplicationController, верно?

Как я получу доступ к current_user из моих представлений?

PS Я знаю о других системах аутентификации, я просто хочу научиться создавать свои собственные.

Ответы [ 3 ]

1 голос
/ 27 октября 2010

Основная логика, которой вы придерживаетесь, верна.Конечно, вы всегда можете расширить это с функциями, которые вам нужны.Например, вам понадобятся вспомогательные методы для таких вещей, как «logged_in?»и "current_user".Кроме того, вы можете добавить истечение сеанса или сохранение сеанса в качестве функции «запомнить меня».
Пойдите, вы не узнаете системы аутентификации лучше, чем построите свою собственную, а потом поймете, что с ней не так.

0 голосов
/ 27 октября 2010

После того, как Фейсал сказал, что я скажу, я отвечу только на последнюю часть вашего вопроса: «Как я получу доступ к current_user из своих представлений?»

попробуйте что-то вроде этого:*

class User < ...
  def self.current=(u)
    @current = u
  end
  def self.current
    @current
  end
end

В ваших представлениях (или любой части вашего кода) вы можете вызвать User.current.Ваш контроллер должен назначить проверенного пользователя для User.current.Ваши фильтры могут реагировать на "если User.current.nil?"и т. д.

Если вы хотите быть потокобезопасными, вы можете использовать переменную потока вместо @current:

Thread.current[:current_user] = u
0 голосов
/ 27 октября 2010

Вы должны действительно проверить подлинность самоцвета на github.http://github.com/binarylogic/authlogic В нем также есть отличные инструкции по настройке пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...