2016-08-20 1 views
0

레일스에 새로운 기능이있어서 사용자 세션을 파괴하는 데 문제가 있습니다. 내가 전화 '세션/파괴'와, 아무것도에 인쇄되지됩니다 세션을 파괴하려고하면 내 세션 컨트롤러이Rails 세션 [: user_id]은 (는) 파괴하지 않습니다.

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 

처럼 보이는 '세션두고 [을 : USER_ID]'라인. 그래서 그 세션이 그 시점에서 아무 것도 없다는 것을 확실히 알고 있습니다. 그러나 문제는 해당 사용자에 대한 세션을 삭제 한 후에도 다른 컨트롤러에서 이와 같은 세션에 계속 액세스 할 수 있다는 것입니다.

class LessonsController < ApplicationController 

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

end 

왜 이런 일이 발생합니까? 어떻게 해결할 수 있습니까?

+0

경로를 어떻게 부르십니까? 경로를 어떻게 정의 했습니까? 'getLesson'에서; 무엇이 인쇄됩니까? – Ven

+0

이 *는 [레일스에서 ​​세션 변수를 지우는 가장 좋은 방법은 무엇입니까?]와 중복 될 수 있습니다. (http://stackoverflow.com/questions/3995816/what-is-the-best-way-to-clear -a-session-variable-in-rails) – Ven

+0

음 .. 루비 콘솔에 'puts nil'을 해봅시다. ;) – siegy22

답변

0

session.delete(:user_id) 

대신 내가 과거에 운이있는 것입니다

session[:user_id] = nil 

보십시오.