我有一个主应用程序,这个应用程序有使用设计的用户和管理员(不同的模型和表)。
主应用程序使用门卫允许用户对其他服务进行身份验证。客户端应用程序使用Omniauth来使用OAuth2。
我现在正在达到客户端应用需要后端并使用主应用程序中的管理员用户有意义的程度。
这是我目前的策略:
module OmniAuth
module Strategies
class ResaNetwork < OmniAuth::Strategies::OAuth2
option :name, :resa_network
option :client_options, {
#site: "http://dylog.ubuntu-sylario.net:3000",
site: ENV["CLIENT_OPTION_SITE"],
authorize_path: "/oauth/authorize"
}
uid do
raw_info["resource_owner_id"]
end
def raw_info
@raw_info ||= access_token.get('/api/me').parsed
end
end
end
end
对于门卫,我将使用warden范围(我知道它与oauth范围无关)用户或管理员,具体取决于resource_owner_authenticator中的oauth2范围。
输入的特定范围是否有可能包含omniauth的登录路径的参数?怎么样?
我对范围的使用是正确的还是非常丑陋的黑客?有关信息,管理员将访问用户数据,而用户只能在API中查看他们的数据。