我正在开发一个用于我的 IOS 应用程序的 API,我很好奇在 oAuth2 中使用刷新 token 的最佳实践。我正在使用用户密码授权来生成访问 token 和刷新 token 。
如果 token 每 60 分钟过期,那么这意味着客户端每 60 分钟必须进行 3 次连续的 API 调用:1. 使用访问 token 从 API 获取资源,2. api 响应无效 token ,因此我们需要使用刷新 token ,3. 现在 token 已刷新,我们需要再次尝试初始调用。
那么,我想知道的是,最好在 token 过期之前刷新它吗?还是在 API 响应 token 过期错误后生成新的访问 token 更好?
最佳答案
不确定是否存在最佳实践,但提前刷新肯定更有效,因为这样您就不会发出您知道会失败的请求。定时器刷新的成本远低于网络通信的成本。
您仍然需要处理 token 在任何请求上都无效的情况,因为服务器可能会出于多种其他原因使 token 无效,所以这实际上是一个“我如何才能使它高效和用户友好”而不是“我可以删除我的一些代码之类的东西。处理错误响应是标准的,提前刷新是用户友好的。
当你有正在进行的请求时要小心刷新,你可能会无意中通过使它的 token 无效而导致请求失败......
关于ios - 0Auth2 : when do you use the refresh token to get a new access token? 过期前还是过期后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641739/
任何人都可以解释为什么当对方法的调用看起来像这样时我可能会看到这个堆栈(由HTTParty::post请求引起):beginresponse=HTTParty::post(url,options)rescuelogger.warn("Couldnotpostto#{url}")rescueTimeout::Errorlogger.warn("Couldnotpostto#{url}:timeout")end堆栈:/usr/local/lib/ruby/1.8/timeout.rb:64:in`timeout'/usr/local/lib/ruby/1.8/net/protocol.rb
我正在尝试将Pusher插入到我已经很晚的Rails应用程序中。客户端工作正常-使用PusherEventCreator触发所需的javascript。但是服务器端不工作:在我的通知Controller中使用以下代码创建要测试的操作:Pusher.trigger('private-4','new_message',{:from=>"christian",:subject=>"hello"})给出这个错误:Pusher::AuthenticationError(Unknownauth_key):app/controllers/notifications_controller.rb:57:
我有这样的ruby代码:begindoc=Nokogiri::HTML(open(url).read.strip)rescueException=>exlog.error"Error:#{ex}"end我得到的日志是:ERROR--:Error:executionexpired我想要block重新执行直到它成功。我该怎么做? 最佳答案 我会稍微扩展一下我的评论。您可以使用retry返回到begin:begindoc=Nokogiri::HTML(open(url).read.strip)rescueException=>exlo
我对Rails中不在表面上的部分不是很有经验。我想要的只是有一个sessioncookie,其过期时间设置为session,这样当用户离开浏览器或其他任何东西时它就会过期。作为安全措施。 最佳答案 默认情况下,cookie是sessioncookie。通过在config/initializers/session_store.rb中提供选项散列,您可以完全控制cookie。选项与Rack::Session::Cookie(seedocs)相同。因此,例如,对于特定的到期日期,您可以提供:expire_after。如果您使用Devise
我已经建立了一个我希望得到最低限度安全保护的博客(即,我只是想将我不认识的随机人员拒之门外,我并没有尝试实现类似NSA的安全措施)。我正在使用toto使用Rack::Auth::Basic来“保护”站点。我想通过index.xml以便博客读者能够在不处理密码的情况下阅读提要(是的,我知道这是我的“安全性”中的一个大漏洞).如何让Rack::Auth::Basic通过这个url?这就是我向网站添加基本身份验证的方式:useRack::Auth::Basic,"blog"do|username,password|[username,password]==['generic','stupid
我正在使用Rack尝试在我的Sinatra应用程序中实现“记住我”功能。我可以将sessioncookie设置为在session结束时或X秒后过期,但我想同时执行这两种操作。例如,如果用户点击了“记住我”,那么我希望他们的session在X秒后结束。例如,我的app.rb有一行看起来像这样:useRack::Session::Cookie,:expire_after=>2592000,#30daysinseconds:secret=>MY_SECRET我尝试在用户登录时执行以下操作:if(!remember_me)env['rack.session.options'][:expire_
有点像Rails.cache.delete('site_search_form')好像不行。这可能吗?谢谢。 最佳答案 ActionController::Base.new.expire_fragment(key) 关于ruby-on-rails-如何使控制台中的View缓存片段过期?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/756888/
我一直在尝试使用Rails的缓存功能,但我无法使某些缓存片段过期,尽管它们似乎已过期。使用Rails教程站点中指出的“俄罗斯娃娃缓存”,我正在使用此配置我在release_controller.rbController中使外部缓存过期,我在其中使用expire_fragment("all_available_releases")使片段过期。我在更新、删除或添加条目的Controller的每个方法中都使用它。这是WEBrick的日志,尽管过期片段已在其中注册,但5行后过期片段被读取并使用,而这是不应该的。这个例子是在destroy调用之后。ProcessingbyReleasesCont
我正在浏览将auth0设置为此处列出的AWS的API网关授权方的教程:https://auth0.com/docs/integrations/aws-api-gateway/custom-authorizers我正在使用此处推荐的授权方:https://github.com/auth0-samples/jwt-rsa-aws-custom-authorizer唯一的修改是配置文件。但是,在测试授权函数时,出现如下错误:{"name":"JsonWebTokenError","message":"jwtissuerinvalid.expected:https://MYSERVICE.au
'authenticated'事件在成功验证后发出。lock.on('authenticated',function(authResult){});但是有什么方法可以检测新用户何时注册您的应用程序,或者我是否必须将用户存储在我的数据库中并在每次用户进行身份验证时检查它? 最佳答案 Auth0Lock不会触发用户注册的特定事件。然而,您可以在customrule上检测到这一点并使用此元数据丰富用户配置文件。有一个signupsamplerule这说明了这种可能性function(user,context,callback){user.