Rails会话[:user_id]不会破坏

时间:2016-08-20 22:22:54

标签: ruby-on-rails session

我是Rails的新手,并且试图破坏用户会话时遇到麻烦。 我的会话控制器看起来像这样

class SessionsController < ApplicationController
    def new
    end

    def create
        name = params[:name]
        password = params[:password]

        user = User.authenticate(name, password)

        if user.nil?
             render json: {isLogin: false}
        else
             session[:user_id] = user.id
             render json: {isLogin: true}
        end
    end

    def destroy
        session[:user_id] = nil
        puts session[:user_id]  # Nothing gets printed to the console here
        render json: {isLogin: false}
    end 
end

当我调用'sessions / destroy'并尝试销毁会话时,在'puts session [:user_id]'行中不会打印任何内容。所以我肯定知道会话在那时是零。但问题是,即使在我销毁该用户的会话之后,我仍然可以从不同的控制器访问这样的会话。

class LessonsController < ApplicationController

    def getLesson
        userId = session[:user_id]
        # do stuff
    end

end

为什么会这样?我该如何解决这个问题?。

1 个答案:

答案 0 :(得分:0)

尝试

session.delete(:user_id)

而不是

session[:user_id] = nil

这就是我过去的运气。