我正在为我的 Rails 应用程序使用“omniauth”和“omniauth-openid”gem。登录按预期工作,它在从 openId 提供者回调后创建一个新会话。问题在于注销。
在我的控制器中,我有这个代码来破坏会话。
def destroy
session.delete(:user)
@current_user = nil
redirect_to root_path
end
我的注销路线正在调用此操作。当我注销时,我看到会话中的用户按预期设置为 nil。现在,当我输入主页 URL 时,我的辅助方法正在检查用户是否已经登录,此时它返回 false 并按预期重定向到“/auth/open_id?origin=request.url”。问题从这里开始,现在我什至在提供凭据之前,提供者发布回调并与同一用户创建新会话。我究竟做错了什么?