我正在凌驾于门卫AuthorizationsController之上。正如文档建议的那样,我继承了AuthorizationsController。下面的代码显示了我对覆盖的最新尝试。
我现在拥有的
基本上,在新的授权门禁进程周围添加一个额外的if语句。我增加了第3-7行,目前还不错。如果第6行等于true,它将返回:error。
我的问题
我仍然可以通过浏览器URL和服务器日志看到AccessToken。因此,作为一个用户,我仍然可以使用这个AccessToken来检索一些数据,例如邮递员。即使是这样,在登录时也给了我一个错误。为什么会这样呢?我怎么才能阻止这一切发生呢?
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发生了。
发布于 2017-04-11 14:06:17
您假设您在浏览器url中看到的令牌是OAuth access_token。它实际上只是一个JWT(JSON令牌)。我假设这个令牌是某种会话令牌,因为用户还没有得到的授权才能使用应用程序。您错误地假设您的OAuth流到达了“用户代理通过重定向URI接收访问令牌”步骤。
您的url中的令牌一点也不有害,因此您没有理由阻止您的应用程序发布。如果用户停止其会话,则令牌将变得无用。
希望这会有所帮助:)
发布于 2017-04-04 13:29:41
在第3和第4行中,调用authorization.authorize,这可能是在执行授权,然后将访问令牌添加到响应中。
https://stackoverflow.com/questions/43156989
复制相似问题