0
我正在使用Rails 3.2.13和Ruby 1.9.3,并没有使用Devise。rails 3.2中的reset_session不起作用
我正在编写脚本以在每次登录后重置会话。请检查以下代码并指出问题。
在使用reset_session之前,一切都很好。我想使用reset_session功能。
会话控制器
class SessionsController < ApplicationController
skip_before_filter :is_loggedin?, :only => [:new, :create]
def create
render :update do |page|
if !params[:email].blank? && !params[:password].blank?
if user = User.authenticate(params[:email], params[:password])
if user == "unuser"
page.alert("Your username and/or password was incorrect.")
elsif !user.account_id.blank?
temp_session = session.dup
reset_session
session.replace(temp_session)
# temp = session
# reset_session
# session.reverse_merge!(temp)
if params[:remember_me]
cookies.permanent[:user_id] = user.id
else
cookies[:user_id] = user.id
end
user.update_attributes(:last_login => Time.now, :is_online => true)
user.update_attributes(:time_zone => cookies["time_zone"])
if user.user_type=="teacher"
page.redirect_to home_teachers_path(:account_id =>user.account_id)
else
page.redirect_to home_students_path(:account_id =>user.account_id)
end
else
page.alert("You have not confirmed the activation link yet. Please check your registered email ")
end
else
page.alert("Invalid user/password.")
end
else
page.alert("You can't leave the fields empty.")
end
end
end
end
下面显示的错误日志:
Started POST "/sessions" for 127.0.0.1 at 2014-07-04 19:04:22 +0530
Processing by SessionsController#create as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"i123213232323233123+dfdfi/3424324324", "email"=>"[email protected]", "password"=>"[FILTERED]"}
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`email` = '[email protected]' LIMIT 1
Completed 500 Internal Server Error in 20ms
NameError - undefined local variable or method `reset_session' for #<#<Class:0x000000068995a8>:0x000000075c44f8>:
app/controllers/sessions_controller.rb:26:in `block in create'
prototype-rails (3.2.1) lib/action_view/helpers/prototype_helper.rb:152:in `block in initialize'
actionpack (3.2.13) lib/action_view/helpers/capture_helper.rb:187:in `with_output_buffer'
prototype-rails (3.2.1) lib/action_view/helpers/prototype_helper.rb:151:in `initialize'
prototype-rails (3.2.1) lib/prototype-rails/renderers.rb:7:in `block in <module:Renderers>'
actionpack (3.2.13) lib/action_controller/metal/renderers.rb:35:in `block in _handle_render_options'
评论,它不是 – santosh
了你合作过的变量两种方法会话固定 - 对策。我想实现这个,所以我使用了reset_session。检查链接:http://guides.rubyonrails.org/security.html#sessions http://stackoverflow.com/questions/4812813/rails-login-reset-session –
您的控制器是从
santosh