gpt4 book ai didi

ruby-on-rails - 多个模型的 Doorkeeper 资源所有者凭证流

转载 作者:行者123 更新时间:2023-12-04 03:53:30 24 4
gpt4 key购买 nike

我遇到的问题是我正在使用门卫 resource owner credential flow从 iOS 应用程序验证用户。不过,我的项目有两个单独的用户模型(让我们称它们为 User 和 Admin)。我的代码如下所示:

resource_owner_from_credentials do |routes|
user = User.find_for_database_authentication(:email => params[:username])
user if user && user.valid_password?(params[:password])
end

它有效,但我如何检查管理员?换句话说,我不知道登录的人是用户还是管理员 - 我如何检查两者?

最佳答案

门卫提供范围 为此(见 https://github.com/doorkeeper-gem/doorkeeper/wiki/Using-Scopes)

因此,在您的 doorkeeper.rb 文件中,您可以执行以下操作:

resource_owner_from_credentials do |routes|
if params[:scope].present?
case params[:scope]
when "user"
u = User.find_for_database_authentication(:email => params[:email])
when "admin"
u = Admin.find_for_database_authentication(:email => params[:email])
end
else
#default auth
u = User.find_for_database_authentication(:email => params[:email])
end
u if u && u.valid_password?(params[:password])
end

然后为了验证您的资源(例如管理员),您可以发出这样的请求:
POST $HOST/oauth/token
{
email: john@doe.com
password: johndoe
grant_type: password
scope: admin
}

关于ruby-on-rails - 多个模型的 Doorkeeper 资源所有者凭证流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25834404/

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