在没有Devise Rails 5的情况下破坏用户会话



我将尝试在没有Devise的情况下进行简单的用户授权。我的会话控制器有新的创建和销毁操作:

  def new
    @user = User.new
  end
  def create
    @user = User.find_by(name: user_params[:name])
    @user ||= User.create(user_params)
    if @user.valid? && @user.authenticate(user_params[:password])
      session[:user_id] = @user.id
      redirect_to tasks_path
    end
  end
  def destroy
    reset_session
  end

但它不起作用。如何销毁用户会话?

应该这样做。这实际上取决于你设置了什么样的助手。您需要访问您创建的会话变量和用户id,因此session.delete(@user.id)可能最终就是您所需要的。这取决于它是如何发送到方法的,以及你可以访问什么数据(是否有before操作或提供@user变量的东西,或者你需要用类似@user = User.find(:params)的东西来找到它,其中params是用户id。

def destroy
  session.delete(:user_id)
  @user = nil
end

相关内容

最新更新