首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >看门人-如果用户不是管理员,则拒绝访问令牌请求

看门人-如果用户不是管理员,则拒绝访问令牌请求
EN

Stack Overflow用户
提问于 2014-10-11 10:04:17
回答 2查看 567关注 0票数 2

使用密码授予OAuth-2流,如果非管理员用户使用scope: 'admin'请求访问令牌,我希望能够阻止这种情况发生-我正在使用devise的doorkeeper。

目前,任何老用户都可以请求任何作用域,并且默认情况下会被授予作用域。

我没有看到门卫中有明显的钩子来执行这种逻辑。我应该在哪里/如何配置它?

EN

回答 2

Stack Overflow用户

发布于 2015-06-27 00:28:46

这在目前的守门人3.x版本中是不可能的。您需要对OAuth::PreAuthorization类进行monkeypatch或派生gem,以添加所需的逻辑。

我也有类似的需求,所以我将此设置为一个配置选项,您可以在其中指定自己的preauth类。代码是here。看门人维护人员指出了they wanted to think more about the feature

票数 1
EN

Stack Overflow用户

发布于 2016-10-18 17:45:12

使用Doorkeeper 4.x.x,我检查' admin‘作用域是否存在,以及当前用户是否为Doorkeeper的初始值设定项中的admin:

代码语言:javascript
复制
resource_owner_from_credentials do
  user = User.find_for_database_authentication(login: params[:login])
  if user&.active_for_authentication? && 
    user.valid_for_authentication? { user.valid_password? params[:password] }
      admin_scope = params[:scope]&.split&.include?('admin')
      user if admin_scope && user.admin? || !admin_scope
    end
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26310307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档