由于Doorkeeper是一个独立的引擎,我们无法访问您在ApplicationController中所做的任何事情.但是如果你需要current_user怎么办?这可能是一种解决方法?
第一个想法是修补ActionController :: Base.还有更好的想法?
最佳答案 我的门卫实施是在基础应用程序内部,所以如果你使用一个单独的引擎,这将不会有帮助,但如果你使用相同的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