2016-08-20 3 views
0

Ich bin neu in Rails und habe Probleme, die Benutzersitzung zu zerstören. Meine Session Controller wie dieseRails-Sitzung [: user_id] wird nicht zerstört

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 

sieht Wenn ich 'sessions/zerstören' nennen und versuchen, die Sitzung zu zerstören, wird an nichts gedruckt 'setzt session [: user_id]' Linie. Ich weiß also sicher, dass die Sitzung zu diesem Zeitpunkt gleich null ist. Aber das Problem ist, dass ich immer noch von einem anderen Controller auf die Sitzung zugreifen kann, auch nachdem ich die Sitzung für diesen Benutzer zerstört habe.

class LessonsController < ApplicationController 

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

end 

Warum passiert das? und wie kann ich das beheben?

+0

Wie nennt man die Route? Wie hast du die Route definiert? In 'getLesson'; Was druckt es? – Ven

+0

Dies * könnte * ein Duplikat von [Was ist der beste Weg, um eine Session-Variable in Schienen zu löschen?] (Http://stackoverflow.com/questions/3995816/what-ist-the-best-way-to-clear -a-session-variable-in-rails) – Ven

+0

um .. versuch 'puts nil' auf einer Ruby-Konsole, was wird gedruckt? ;) – siegy22

Antwort

0

Versuchen

session.delete(:user_id) 

statt

session[:user_id] = nil 

Das ist, was ich Glück mit in der Vergangenheit gehabt haben.

Verwandte Themen