1

我正在使用带有https://github.com/zquestz/authpoint作为模板的 google oauth2 提供程序的omniauth。一切正常,除了应用程序在身份验证后返回登录页面而不是转到主页(或重定向页面)。仅当我将 'thin' 与 'nginx' 一起使用时才会出现此问题。在我的开发机器上,它可以在 WEBrick 服务器上正常工作。

身份验证后,如果我显式访问主页(或重新加载页面),应用程序会正确访问主页。

相关代码为:

# Get current provider
def current_user_id
  session[:user_id]
end

# Setup the session if we have a valid user.
def setup_session(user_id)
  session[:user_id] = user_id
end

# Store a url in the session that is safe to go back to (non-volatile)
def store_location
  session[:return_to] = request.fullpath
end

# Redirect back to last good page, or the page you pass it if it doesn't know where to go.
def redirect_back_or_default(default)
  location = session[:return_to] || default
  location = default if location == request.fullpath
  redirect_to(location)
  session[:return_to] = nil
  return
end

问题是会话哈希在redirect_back_or_default中从授权重定向后没有获取存储变量的新值,因此当在'current_user_id'中查询:user_id时,它返回nil,将应用程序返回到登录页面。

我使用 ActiveStore 作为会话存储。

4

0 回答 0