gpt4 book ai didi

ruby-on-rails - 门卫撤销 token

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

我正在我的应用程序中实现OAuth 2,并且我已经具有登录/刷新 token ,但是注销时遇到了一些麻烦。

我有由Doorkeeper生成的这组路线:

Routes for Doorkeeper::Engine:
authorization GET /authorize(.:format) doorkeeper/authorizations#new
authorization POST /authorize(.:format) doorkeeper/authorizations#create
authorization DELETE /authorize(.:format) doorkeeper/authorizations#destroy
token POST /token(.:format) doorkeeper/tokens#create
applications GET /applications(.:format) doorkeeper/applications#index
POST /applications(.:format) doorkeeper/applications#create
new_application GET /applications/new(.:format) doorkeeper/applications#new
edit_application GET /applications/:id/edit(.:format) doorkeeper/applications#edit
application GET /applications/:id(.:format) doorkeeper/applications#show
PUT /applications/:id(.:format) doorkeeper/applications#update
DELETE /applications/:id(.:format) doorkeeper/applications#destroy
authorized_applications GET /authorized_applications(.:format) doorkeeper/authorized_applications#index
authorized_application DELETE /authorized_applications/:id(.:format) doorkeeper/authorized_applications#destroy

我想做的是撤销服务器中的 token ,因此我认为我必须调用的服务是“DELETE/authorize”,对吗?但是我尝试了许多使用此服务的不同方式,并且我只记录错误。

顺便说一句,我不知道撤销服务器中的 token 或仅从应用程序中删除 token 是否正确?

PS:我在iOS 7中为我的客户端使用AFNetworking 2。

最佳答案

这并不能真正回答问题,但是可以提供相关信息。

我遇到的问题是,在对有效的用户/密码组合进行任何事先授权之后,门卫将在“资源所有者密码凭证授予”请求中验证任何用户/密码组合。场景是:

  • 客户端使用有效的用户名和密码
  • 获得授权
  • 客户端重置/忘记授权 token 以终止授权
  • 客户端可以使用任何用户名和密码获得新授权,以授权原始用户。

  • 事实证明,这是Warden将授权用户保留在 session 中,而我的iOS客户端很乐意为我维护 session 。

    我通过让看守在身份验证后立即注销用户来解决此问题。之所以可行,是因为在获得授权请求时,OAuth会将当前用户与授权 token 一起存储。它不需要用户在 session 中。

    以下来自config/initializers/doorkeeper.rb。授权后,最后两行将退出。
    # called for Resource Owner Password Credentials Grant
    resource_owner_from_credentials do
    request.params[:user] = {:email => request.params[:username], :password => request.params[:password]}
    request.env["devise.allow_params_authentication"] = true
    user = request.env["warden"].authenticate!(:scope => :user)
    env['warden'].logout
    user
    end

    关于ruby-on-rails - 门卫撤销 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20124437/

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