gpt4 book ai didi

ruby-on-rails - 覆盖授权 Controller 门卫

转载 作者:行者123 更新时间:2023-12-04 21:07:00 25 4
gpt4 key购买 nike

我正在压倒门卫 AuthorizationsController .作为docs建议我从 AuthorizationsController 继承.现在下面的代码显示了我最新的覆盖尝试。

我目前拥有的

基本上,在 new Authorization Doorkeeper process 周围添加一个额外的 if 语句.我添加了第 3-7 行,目前运行良好。它返回给我:error如果第 6 行等于 true。

我的问题

我仍然可以通过浏览器 URL 和服务器日志看到 AccessToken。所以作为一个用户,我仍然可以使用这个 AccessToken 来检索一些数据,例如 Postman。即使它在登录时给了我一个错误。这是为什么呢?我怎样才能防止这种情况发生?

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

如果您查看 introduction对于 DigitalOcean 编写的 OAuth2,我的 if 语句在第 3 步“用户代理接收带有重定向 URI 的访问 token ”上仍然成功,因为我可以在浏览器 URL 中看到带有重定向 URI 的 AccessToken。在第 3 步之后,它给了我 :error .

更新

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

最佳答案

您假设您在浏览器 url 中看到的 token 是 OAuth access_token .它实际上只是一个 JWT (JSON 网络 token )。我假设此 token 是某种 session token ,因为 Doorkeeper 尚未授权用户使用该应用程序。您错误地假设您的 OAuth 流程到达“用户代理通过重定向 URI 接收访问 token ”步骤。

您的 url 中的 token 根本没有害处,因此您没有理由阻止您的应用程序发出 token 。如果用户中断他们的 session ,则 token 将变得无用。

希望这可以帮助 :)

关于ruby-on-rails - 覆盖授权 Controller 门卫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43156989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com