Таким образом, на моем локальном хосте знак остается и пользователь выполнил вход. Однако на Heroku после входа в систему он даже не узнает, что пользователь все еще выполнил вход. в журналах Heroku, он начинает -A получить запрос на войти -SessionsController визуализирует новый сеанс -A пользователь обязуется -A POST запрос на запуск сессий происходит -redirect происходит -user вход, видимо, ISN» t сохраненоВход Heroku не сохраняется
-Это похоже на проблему с файлом cookie?
Это мой Сеансов контроллер
class SessionsController < ApplicationController
def new
end
def create
user = User.authenticate(params[:email], params[:password])
if user
session[:user_id] = user.id
sign_in user
redirect_to root_url, :notice => "Logged in!"
else
flash.now.alert = "Invalid email or password"
render "new"
end
end
def destroy
sign_out
redirect_to posts_url, :notice => "Logged out!"
end
end
Это мой SessionsHelper
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
def current_user?(user)
user == current_user
end
def is_admin?
signed_in? ? current_user.admin : false
end
def sign_out
current_user.update_attribute(:remember_token,
User.encrypt(User.new_remember_token))
cookies.delete(:remember_token)
self.current_user = nil
end
end
В моей модели пользователя я сохранить remember_token перед сохранением
before_save :create_remember_token
def create_remember_token self.remember_token = User.encrypt(User.new_remember_token)
Любые идеи было бы гораздо оценили!
Почему nil будет сохранен в файлы cookie в методе знака, если после создания пользователя я сохраняю имя_сохранения, связанное с пользователем? – google1254
Если у вас есть обратный вызов в модели, которая точно сохраняет токен памяти, то я не уверен - я не знаю, потому что вы не предоставили эти данные. Все, что я вижу, это то, что в контроллере это не делается, а в методе знака это тоже не делается. Поэтому я пришел к выводу, что предоставил предоставленную информацию. Я бы определенно сошёл в консоли Хероку. geku run rails c. Затем вручную создайте нового пользователя «@user = User.create (yourattributes)», а затем посмотрите, есть ли у пользователя запоминающий токен «@ user.remember_token» – FCStrike
Хороший звонок. Я проверил, и пользователь remember_token всегда равен нулю.Если у меня есть before_save: create_remember_token в моей модели пользователя, и это определение для create (def create_remember_token self.remember_token = SecureRandom.urlsafe_base64 end) есть ли причина, по которой она не сохраняется? – google1254