我将尝试在没有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