2017-09-28 3 views
0

레일스에서 ​​Bcrypt와 has_secure_password를 사용하여 기본 앱을 구축하고 있습니다.레일에서 사용자 세션을 종료 할 수 없습니다.

I는 사용자의 컨트롤러에서 다음 기본 방법을보기에 링크를 넣고함으로써, 사용자를 삭제하려고했다 :

def destroy 
    @user.destroy 
    redirect_to root_path(@user) 
    end 

문제는이 세션을 종료하지 않고 사용자를 삭제하는 것이다 첫째, 그래서 지금은 오류 메시지가 읽습니다 루프에 갇혀있다 : 사용자가 삭제 되었기 때문에 'ID'= 5, 사용자를 찾을 수 없습니다.

kill -9 PID를 사용하여 터미널에서 사용자 세션을 종료하려고 시도했지만 의도 한 효과가 없습니다. ctrl-c와 같을뿐입니다.

터미널에서 사용자 세션을 종료 할 수있는 방법을 알고 싶습니다. 다시 발생해야하며 동시에 사용자와 사용자 세션을 동시에 삭제할 수있는 방법을 알고 싶습니다. 고마워요

추신. 이 작업을 수행 할 수 있습니다 파괴하는 방법에

def create 
    user = User.find_by_email(params[:email]) 
    if user && user.authenticate(params[:password]) 
    session[:user_id] = user.id 
    redirect_to new_comment_path, notice: "Logged in!" 
    else 
    flash.now.alert = "Email or password is invalid" 
    render "new" 
    end 
    end 

def destroy 
    session[:user_id] = nil 
    redirect_to root_url, notice: "Logged out!" 
end 
+0

먼저 당신이 세션에서 signout하고 그 후 사용자를 삭제해야합니다. 어떻게 세션을 만들고 있습니까? 방법을 제공하십시오. –

+0

죄송합니다. 세션 컨트롤러를 포함 시키려고했습니다. - 여기가 지금은 – Robert

+0

입니다. 사용자가'session [: user_id] = nil' 라인 아래 또는 그 이상을 파괴 할 수 있다고 생각합니다. –

답변

0

: 세션 컨트롤러는 다음 Bcrypt에 따라 방법이있다

def destroy 
    User.find(session[:user_id]).destroy 
    session[:user_id] = nil 
    redirect_to root_url, notice: "Logged out!" 
end 
+0

당신은 세션 컨트롤러를 의미합니까? 또한 - current_user를 찾을 수 없기 때문에 지금도 로컬 호스트를 사용할 수 없습니다. 내가 현재 세션을 어떻게 끝낼 수 있는지 아십니까? 감사합니다 – Robert

+0

이 [link] (https://stackoverflow.com/questions/2175169/clearing-a-rails-session-during-development)를 사용할 수 있습니다. 그것은 당신이 레일 콘솔로 그것을 할 수 있고'rake db : sessions : clear'를 입력 할 수 있다고 말합니다. –

+0

이것은 users_controller에 있어야하며, sessions_controller에서 모든 로그 아웃 후 사용자를 삭제합니다 :) –