【问题标题】:Get access to current_user in Doorkeeper overriden layout在 Doorkeeper 覆盖布局中访问 c​​urrent_user
【发布时间】:2013-07-12 12:20:51
【问题描述】:

由于 Doorkeeper 是一个独立的引擎,我们无法访问您在 ApplicationController 中所做的任何事情。但是如果你需要一个 current_user 怎么办?这里有什么解决方法?

第一个想法是猴子补丁ActionController::Base。有更好的想法吗?

【问题讨论】:

    标签: ruby-on-rails oauth-2.0 authorization doorkeeper


    【解决方案1】:

    我的门卫实现在基本应用程序中,所以如果您使用单独的引擎,这将无济于事,但如果您使用相同的 rails 应用程序,我将在这里分享:

    class ApplicationController < ActionController::Base
      protect_from_forgery
    
      private
    
      def current_user
        if doorkeeper_token
          return current_resource_owner
        end
        # fallback to auth with warden if no doorkeeper token
        warden.authenticate(:scope => :user) 
      end
    
      # Needed for doorkeeper find the user that owns the access token
      def current_resource_owner
        User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
      end    
    
    end
    

    【讨论】:

      【解决方案2】:

      除非没有答案,否则我自己的脏猴子补丁可能会对某人有用。

      在初始化程序/action_controller_patch.rb:

      module ActionController
        Base.class_eval do
      
          def current_user
            @current_user ||= User.find(session[:user_id]) if session[:user_id]
          end
          helper_method :current_user
      
        end
      end
      

      【讨论】:

        【解决方案3】:

        我想你可以在这个页面上找到它。

        https://github.com/applicake/doorkeeper/wiki/Using-Resource-Owner-Password-Credentials-flow

        我正在使用凭据身份验证模式,所以在我的情况下这是可行的。

        Doorkeeper.configure do
          resource_owner_from_credentials do |routes|
            request.params[:user] = {:email => request.params[:username], :password => request.params[:password]}
            request.env["devise.allow_params_authentication"] = true
            request.env["warden"].authenticate!(:scope => :user)
          end
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-26
          • 1970-01-01
          • 2019-01-31
          相关资源
          最近更新 更多