Please help! I ran into a problem that session[:user_id] seems lost.
The session[:user_id] is set during user's login. Other pages have
"before_filter :login_required". The method "login_required" is
defined in ApplicationController to check if session[:user_id] exists.
However, after user logs in successfully (I can see the printed
user_id), and when bringing other pages which call login_required, the
session[:user_id] becomes empty.
I am using rails 1.2.2 and gem version is also 1.2.2.
active_record_store is used for session storage.
Thanks Bryan for your help. Yes, I am sure the value is empty, not
display issue. The session is still in db (sessions table). Here is
part of code:
class IndexController < ApplicationController
...........
def process_student_login
if user = User.sauthenticate(params[:user])
if user.active?
session[:uid] = user.id
logger.info("session uid = #{session[:uid]}") # it prints
out uid successfully
..............
end
end
class ApplicationController < ActionController::Base
before_filter :set_user
def set_user
logger.info("in set_user: session uid = #{session[:uid]}")
# it prints out nil
@user = User.find(session[:uid]) if @user.nil? && session[:uid]
end
def login_required
logger.info("in login_required: session uid =
#{session[:uid]}") # it prints out nil
return true if @user
access_denied
return false
end
class Myaccount::IndexController < ApplicationController
before_filter :login_required # always fails and returns false