получить идентификатор сеанса от надзирателя или разработать

Мне нужно получить идентификатор сеанса для пользователя и использовать его предпочтительно в модели.

Вот суть:

1) У меня есть список предложений. 2) Незарегистрированные пользователи могут создавать предложения, и их идентификатор сеанса сохраняется в них. 3) Когда пользователь регистрируется или входит в систему, его идентификатор сеанса должен сопоставляться с предложениями. 4) Затем их идентификатор пользователя также следует сохранить в предложении.

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


person atomical    schedule 10.06.2011    source источник
comment
Здесь не нужно пренебрегать изобретением или надзирателем. Просто возьмите session.id и используйте его на записях. Когда пользователь входит в систему, вы можете отобразить быстрое сообщение, если у него есть записи, которые не сохранены для него. Затем свяжите действие контроллера с логикой повторного связывания.   -  person Devin M    schedule 10.06.2011
comment
Где это доступно?   -  person atomical    schedule 10.06.2011
comment
должен быть доступен при установке сеанса. Просто попробуйте вызвать <%= session.id %> в представлении или что-то в этом роде.   -  person Devin M    schedule 10.06.2011
comment
Я хотел бы получить доступ к переменной сеанса из контроллера входа и регистрации, чтобы упростить задачу, поскольку пользователь попадет на страницу, на которой он был последним. Я думаю, вы предлагаете, чтобы после входа пользователя в систему они были отправлены на определенную страницу/контроллер?   -  person atomical    schedule 10.06.2011


Ответы (1)


Вы можете использовать следующее в контроллерах или представлениях:

session['session_id']
=> '69384476b67fa4c2d1e3cc340eb4e951'
person Brett Bender    schedule 10.06.2011
comment
В некоторых ограниченных тестах похоже, что session['session_id'] сбрасывается при успешном входе в систему, поэтому идентификаторы разные. - person rvandervort; 07.12.2011
comment
он сброшен, чтобы предотвратить атаки фиксации сеанса - person numbers1311407; 04.01.2012
comment
Это пустая переменная - person Nathan B; 29.04.2020