我正在为Ruby on Rails使用restful_authentication插件。一切似乎都很好,但似乎根本没有创建用户会话。我有下面的创建方法。似乎正在设置self.current_user,但从未创建实际会话。何时以及如何定义current_user_session。我在我的应用程序控制器中有这个方法,但这是它始终失败的地方。
def create
logout_keeping_session!
user = User.authenticate(params[:login], params[:password])
if user
# Protects against session fixation attacks, causes request forgery
# protection if user resubmits an earlier form using back
# button. Uncomment if you understand the tradeoffs.
# reset_session
self.current_user = user
new_cookie_flag = (params[:remember_me] == "1")
handle_remember_cookie! new_cookie_flag
redirect_back_or_default('/')
flash[:notice] = "Logged in successfully"
else
note_failed_signin
@login = params[:login]
@remember_me = params[:remember_me]
render :action => 'new'
end
端
Application_Controller
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end
UserSession模型为空
答案 0 :(得分:2)
答案 1 :(得分:0)
当你说会话时,你真的是指一个会话还是一些restful_authentication魔术?
我曾经使用restful_authentication,而一些较旧的应用程序仍然使用。但是,他们使用基于cookie的会话管理而不是用户会话模型。
答案 2 :(得分:0)
您使用的是rails 2.3.5吗?
我使用redirect_to看到了这个问题,基本上删除了在重定向之前添加到会话中的所有变量。
恢复到2.3.4似乎解决了我的问题,但是灯塔上有一个关于轨道2.3.X会话的一些奇怪的错误
对于您来说这可能不是同一个问题,但是花了我几个小时来实现修复我的问题,所以可能值得快速测试。