因此,在我的Rails应用程序中使用Omniauth设置OAuth时,我遇到了以下意外行为。强制Omniauth/OAuth忽略浏览器缓存并重新进行验证?
当用户先前已向OAuth提供程序(例如Facebook)进行身份验证时,凭据会存储在浏览器的某处。如果其他用户尝试在同一浏览器中发出OAuth请求,则会使用第一位用户存储的数据!
有没有办法强制OAuth请求不使用存储的凭证,并让用户每次授权应用程序?
我已经尝试使用下面的代码将no-cache
标题添加到控制器,但它当然没有做任何事情,因为请求是提供者OAuth端点,而不是我的应用程序的内部任何位置。
before_filter :set_cache_buster
def set_cache_buster
p "CACHE BBBBUSTED!"
response.headers["Cache-Control"] = "no-cache, no-store, max-age=0,must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
request.headers["Cache-Control"] = "no-cache, no-store, max-age=0,must-revalidate"
request.headers["Pragma"] = "no-cache"
request.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end
任何想法?
我有同样的问题,但与google_oauth2。实际上,我希望让用户决定是否要重置自动登录。你是如何解决这个问题的? – 2013-04-11 21:24:59
@FernandoFabreti这些是我似乎工作的google_oauth2 Omniauth设置:''::scope =>“userinfo.email,userinfo.profile,plus.me”, :approval_prompt =>“force”, :access_type =>“离线“''' – thoughtpunch 2013-04-12 16:20:27