我将尝试在没有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
但是它不起作用。如何销毁用户会话?
答案 0 :(得分:0)
类似的事情应该可以做到。这实际上取决于您设置了什么样的助手。您将需要访问您创建的会话变量以及用户ID,因此session.delete(@user.id)
可能最终将成为您所需要的。取决于将其发送到方法的方式以及您可以访问哪些数据(是否存在操作之前或提供@user变量的东西,或者是否需要使用@user = User.find(:params)
之类的东西来找到它,其中params是用户ID。
def destroy
session.delete(:user_id)
@user = nil
end