2016-10-18 2 views
0

Я использую Clearance для аутентификации в приложении Rails 5, и мне интересно, какой лучший способ хранить важные (для приложения) данные пользователя? Сейчас я храню его в сеансе, переопределяя Clearance::SessionsController, но я беспокоюсь о том, что пользователь возвращается к приложению, а сессия создается из remember_token.Добавление дополнительных данных в файл cookie Clearance?

Должен ли я просто добавить его в файл cookie для настойчивости на всех сеансах? Или есть способ сохранить его в cookie Clearance? Еще лучше, есть ли способ, чтобы Clearance добавлял необходимые данные в сессию при ее создании из remember_token?

+0

В принципе, мой вопрос сводится к тому, что это правильное использование SignInGuard. – dhagerty

+0

Неясно, о какой важной информации вы говорите. Есть ли причина, по которой вам нужно получить это из сеанса, а не получить доступ к нему из 'current_user', разрешение которого дает вам помощника в контроллерах и представлениях? –

+0

Я сохраняю идентификаторы записей, связанных с соответствующей записью, и я бы предпочел не называть 'current_user.associated_record.another_record' в представлениях. Поэтому я сохраняю идентификаторы в сеансе, поэтому я могу установить переменные экземпляра для записей. Я пытаюсь избежать привязки тонны методов к 'current_user'. – dhagerty

ответ

0

Итак, просмотрев Clearance::SessionsController, я заметил, что метод redirect_signed_in_users используется как before_action/before_filter. Я закончил переопределять этот метод, чтобы добавить в нужные мне идентификаторы, аналогично методу #create. Я чувствую себя несколько смущенным, потому что не замечаю этого раньше, потому что это именно то, что мне нужно.

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