无法在Rails中结束用户会话

时间:2017-09-28 06:26:08

标签: ruby-on-rails session bcrypt

我在Rails中构建一个基本应用程序,使用Bcrypt和has_secure_password进行身份验证。

我试图删除用户,在视图中放置一个链接,然后在用户控制器中放置基本方法:

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

问题是这似乎删除了用户而没有先结束会话,所以现在我陷入了一个循环,其中错误信息显示为:找不到用户' id' = 5,因为用户已被删除。

我试图通过使用:kill -9 PID来终止终端中的用户会话,但是这没有预期的效果。它似乎只与ctrl-c相同。

我想知道如果再次发生这种情况我是如何终止终端中的用户会话的,以及我如何能够同时删除用户和用户会话。谢谢

PS。会话控制器根据Bcrypt具有以下方法:

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

1 个答案:

答案 0 :(得分:0)

在你的销毁方法中你可以这样做:

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