2013-09-23 2 views
1

мы используем before_filter :authenticate_userРазрабатывают делает дб вызов `authenticate_user`

Я задавался вопросом о следующем коде:

def serialize_from_session(key, salt) 
     record = to_adapter.get(key) 
     record if record && record.authenticatable_salt == salt 
    end 

Его в devise-3.1.0/lib/devise/models/authenticatable.rb ли изобрести грим вызов базы данных для каждый запрос? или я читаю что-то неправильно?

ответ

1

Да, это так.

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

+0

вот так грустно –

+0

почему? Если что-то о пользователе изменяется между запросами (например, кто-то удаляет их учетную запись или пользователь пытается изменить данные сеанса), которые необходимо проверить при каждой загрузке. Таким образом, пользовательская запись загружается и проверяется. Это очень незначительные накладные расходы. – sevenseacat

+0

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

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