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?
Wie nennt man die Route? Wie hast du die Route definiert? In 'getLesson'; Was druckt es? – Ven
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
um .. versuch 'puts nil' auf einer Ruby-Konsole, was wird gedruckt? ;) – siegy22