Ruby on Rails: ошибка данных сеанса - PullRequest
0 голосов
/ 29 марта 2011

Я довольно новичок в рельсах.У меня есть система входа в систему, где, если введенные данные действительны, устанавливается session[:user].Однако когда позже в ApplicationController я ссылаюсь на session[:user], это всегда выдаст мне ошибку, независимо от контекста, если строка не будет закомментирована.Пример:

user = session[:user]

Ошибка, которую он мне дает, является общей ошибкой "не работает в это время", на самом деле она не говорит, что не так.

Редактировать: Вот ошибка.Это универсальный вариант.

We're sorry, but something went wrong.

We've been notified about this issue and we'll take a look at it shortly.

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

Обработка входа:

session[:name] = valid_user.name
session[:password] = valid_user.password

Проверка сеанса (при каждом просмотре страницы):

name = session[:name]
pass = session[:password]

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Хорошо, несколько вещей:

  1. Вам нужно вывести приложение из рабочего режима - вот почему вы получаете это бесполезное сообщение об ошибке.Установите режим разработки или прочитайте журнал сервера, и вы получите более подробное и полезное сообщение об ошибке.(См. этот вопрос для соответствующего обсуждения, просто установите его в развитие, а не в рабочий режим, как это делал тот, кто просил)

  2. Не сохранять объект пользователяв сеансе, и, безусловно, не хранить пароль в сеансе.Вам нужно только сохранить идентификатор пользователя, а затем сделать что-то вроде этого:

    user = User.find_by_id(session[:user_id]
    
  3. После того, как вы поделитесь более подробным сообщением об ошибке, я могу попытаться помочь вам больше, но, скорее всего, ошибкаВы запрашиваете какой-то параметр сеанса, который не определен.Подробное сообщение об ошибке сообщит вам, что и где, но в то же время тщательно проверьте, чтобы убедиться, что вы никогда не запросите значение сеанса, если оно не было установлено.

0 голосов
/ 29 марта 2011

Хм, я не вижу, чтобы вы инициализировали сессию [: name].Вы используете сессию [: user] для этого.Это действительно так?

Я думаю, что если вы используете:

name = session[:user]

, это будет работать.

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