首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖AuthorizationsController守门员

覆盖AuthorizationsController守门员
EN

Stack Overflow用户
提问于 2017-04-01 12:40:22
回答 2查看 1.5K关注 0票数 5

我正在凌驾于门卫AuthorizationsController之上。正如文档建议的那样,我继承了AuthorizationsController。下面的代码显示了我对覆盖的最新尝试。

我现在拥有的

基本上,在新的授权门禁进程周围添加一个额外的if语句。我增加了第3-7行,目前还不错。如果第6行等于true,它将返回:error

我的问题

我仍然可以通过浏览器URL和服务器日志看到AccessToken。因此,作为一个用户,我仍然可以使用这个AccessToken来检索一些数据,例如邮递员。即使是这样,在登录时也给了我一个错误。为什么会这样呢?我怎么才能阻止这一切发生呢?

代码语言:javascript
复制
class AuthorizationsController < Doorkeeper::AuthorizationsController
  def new
    application = Application.find(authorization.authorize.pre_auth.client.id)
    resource_owner = User.find(current_resource_owner)

    if application.users.exclude?(resource_owner) && application.owner != resource_owner
      render :error
    elsif pre_auth.authorizable?
      if skip_authorization? || matching_token?
        auth = authorization.authorize
        redirect_to auth.redirect_uri
      else
        render :new
      end
    else
      render :error
    end
  end

end

如果您检查由引言编写的OAuth2到DigitalOcean,我的If语句在步骤3“用户代理接收带有重定向URI的访问令牌”上仍然成功,因为我可以在浏览器URL中看到带有重定向URI的AccessToken。在第三步之后,它给了我:error

更新

在启动对AccessToken的重写之前,生成AuthorizationsController的整个过程已经完成。我添加了一个简单的before_action来打印到服务器日志,但在此之前,Doorkeeper::AccessToken Load (0.9ms) SELECT 'oauth_access_tokens'.* FROM 'oauth_access_tokens' WHERE 'oauth_access_tokens'.'token' = 'x' LIMIT 1发生了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-11 14:06:17

您假设您在浏览器url中看到的令牌是OAuth access_token。它实际上只是一个JWT(JSON令牌)。我假设这个令牌是某种会话令牌,因为用户还没有得到的授权才能使用应用程序。您错误地假设您的OAuth流到达了“用户代理通过重定向URI接收访问令牌”步骤。

您的url中的令牌一点也不有害,因此您没有理由阻止您的应用程序发布。如果用户停止其会话,则令牌将变得无用。

希望这会有所帮助:)

票数 1
EN

Stack Overflow用户

发布于 2017-04-04 13:29:41

在第3和第4行中,调用authorization.authorize,这可能是在执行授权,然后将访问令牌添加到响应中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43156989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档