问题标签 [doorkeeper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
941 浏览

ruby-on-rails - Doorkeeper 和 Devise 在 POST 上获得 401 Unauthorized

我正在尝试使用 Rails 构建一个 API 以与 Android 应用程序一起使用,我已经配置了 Devise 和 Doorkeeper,但我想我忘记了一些东西......

我的控制器中有这段代码:

在标题中

当我使用 GET 方法时它可以工作,但 POST 或 DELETE 不能

当我尝试在控制器中执行 POST 时出现此错误

有什么建议么?

更新

看门人.rb

我没有更改设计的默认值

0 投票
1 回答
1618 浏览

ruby-on-rails - 如何从门卫宝石覆盖模型

您是否知道如何覆盖Doorkeeper::ApplicationDoorkeeper gem 提供的覆盖。假设我想添加验证、回调等。Db 表名为auth_applications.

我创建了一个名为 application.rb 的模型,其中包含以下内容,但未触发我的 before_create 调用。最好的方法是什么?

根据此 SO 答案代码应声明为初始化程序。但是我想要一个经典模型,因为我想添加很多东西。

0 投票
1 回答
610 浏览

ruby-on-rails - 门卫在 /oauth/token 请求上抛出 ActiveRecord::RecordNotUnique TinyTds 错误

我确定我在这方面是独一无二的,但我有一个 Rails 4.1.8 应用程序运行 Tiny Tds / activerecord-sqlserver-adapter 到 MS SQL Server。

在调用 /oauth/token 时会产生错误:Cannot insert duplicate key row in object dbo.oauth_access_tokens with unique index index_oauth_access_tokens_on_refresh_token

为什么它会尝试插入新记录而不是更新它?我试图通过克隆项目来调试 Doorkeeper,并试图找出发生这种情况的原因或方式,但我没有任何运气。

以下是我所知道的信息:我正在运行 Rails 4.1.8、2.0.0.rc2(我尝试过其他版本无济于事)和 Devise。

在我第一次成功创建令牌记录时发送 oauth2.password.client 请求。

根据第二个请求,我从 Tiny Tds 收到重复的唯一索引键错误。

有没有人有看门人的经验,并且可能会指出我在哪里寻找调试此功能的正确方向。每次我想我找到它时,我都会尝试看看我是否在正确的位置,并且没有任何变化。

这是请求的日志:

另外,如果我删除唯一索引,它会在我每次发出请求时创建一个新的令牌记录......我认为这应该更新现有的?

更新 2014 年 12 月 12 日上午 9:27

如果我在门卫初始化程序中设置了reuse_access_token,它将起作用......但我假设一旦令牌过期,它会抛出同样的错误......我想这至少会让我得到回应,直到我得到一个可能的方式的回应解决这个...

0 投票
2 回答
2315 浏览

ruby-on-rails - Ruby on Rails 的 skip_before_action 无法按预期工作

有 2 个命名空间:

在公共控制器中创建具有适当范围的门卫授权。例如:

移动命名空间中的控制器继承自公共命名空间中的控制器。例如:

所以这里的重点是功能是相同的,如果移动设备存在一些差异,那么可以在移动命名空间中覆盖操作。问题是这两个命名空间的范围不同,但是跳过了 doorkeeper_authorize!不起作用。

有没有办法解决这个问题?

0 投票
1 回答
752 浏览

ruby-on-rails-4 - 未初始化的常量 Api::Doorkeeper

我的 Rails 应用程序中有 API 引擎,并且我已将引擎安装在主应用程序路线下

我想像这样在我的路线中使用 use_doorkeeper 功能添加门卫路线

这不起作用,因为它试图在 api/doorkeeper/controller_name 而不是 doorkeeper/controller_name 下查找控制器

作为一种解决方法,我在主应用程序 routes.rb 中添加了门卫路由,其范围如下

但我想知道是否有解决方案,所以我仍然可以将路由添加到 api/config/routes.rb 并引用正确的控制器路径

0 投票
1 回答
412 浏览

css - 在 Doorkeeper gem 视图中覆盖 CSS

我正在尝试修改 Doorkeeper gem 附带的视图(参考 wiki:https ://github.com/doorkeeper-gem/doorkeeper/wiki/Customizing-views )。

我希望 doorkeeper/authorizations/new.html.erb 使用我的应用程序 css。我尝试将此行添加到视图中:

然而,它仍然使用门卫的 CSS。有什么我想念的吗?

0 投票
0 回答
304 浏览

ruby-on-rails - “Ruby on Rails”如何为 config/initializer/doorkeeper.rb 中编写的 Oauth2 Provider Doorkeeper 配置代码编写测试用例?

我在我的应用程序中使用 Doorkeeper gem 作为 Oauth2 提供程序。我正在根据我的要求为 config/initializers/doorkeeper.rb 文件中的配置编写测试用例。我的 config/initializers/doorkeeper.rb 文件如下所示。我正在验证 resource_owner 取决于 session[:user_id] 是否存在或重定向到登录页面以验证 resource_owner。此代码在开发环境中执行良好并获取 session[:user_id] 值,但在测试环境中却没有。

我在测试用例中使用 oauth2 客户端来模拟对我的提供者应用程序中的 oauth2 提供者授权端点的请求,并将客户端连接适配器设置为 Rack。

有没有其他方法可以模拟门卫配置的请求和编写测试用例,或者我在这里犯了什么错误?

0 投票
1 回答
443 浏览

ruby-on-rails - 使用门卫 2.0.1 验证葡萄 0.10.1

我正在使用葡萄和门卫来进行 OAuth2 身份验证。现在,我想从grape 0.8升级到grape 0.10.1,门卫升级到2.0.1。不幸的是,我遇到了一些问题。之前,我可以使用grape-doorkeeper 轻松地将doorkeeper 集成到grape https://github.com/fuCtor/grape-doorkeeper

但是在升级后,我得到了一些错误uninitialized constant Doorkeeper::DoorkeeperForBuilder (NameError),并且doorkeeper_for助手似乎从门卫中删除并替换为before_action :doorkeeper_authorize!(参见https://github.com/doorkeeper-gem/doorkeeper/blob/master/CHANGELOG.md#backward-incompatible -更改)。

这里https://github.com/intridea/grape#register-custom-middleware-for-authentication Grape 文档告诉我们,我们可以rack-oauth2用于 OAuth2 身份验证,但据我所知,这缺乏简单的 rails 集成那个门卫提供的,对吧?

所以现在,我有点困惑,如何将门卫 2.0.1 集成到葡萄 0.10.1 中。我已经阅读了一些教程,但它们针对的是此 gem 的旧版本。所以,任何帮助表示赞赏!

更新

我深入研究了 GrapeDoorkeeper gem,发现了以下几行(https://github.com/fuCtor/grape-doorkeeper/blob/master/lib/grape-doorkeeper/oauth2.rb#L64):

module OAuth2 def doorkeeper_for *args doorkeeper_for = Doorkeeper::DoorkeeperForBuilder.create_doorkeeper_for(*args) use GrapeDoorkeeper::Middleware, doorkeeper: doorkeeper_for end end

然后我查看了 doorkeeper 2.0.1 并注意到,类DoorkeeperForBuildercreate_doorkeeper_for方法都消失了。我也找不到替代品或其他方法来做到这一点。对我来说,它看起来像是Doorkeeper::DoorkeeperForBuilder.create_doorkeeper_for返回了一个葡萄使用的中间件。那么,新的门卫将如何做到这一点?

另一个问题是,如果这条线仍然适用于门卫 2:https ://github.com/fuCtor/grape-doorkeeper/blob/master/lib/grape-doorkeeper/oauth2.rb#L73

Grape::API.extend GrapeDoorkeeper::OAuth2

0 投票
1 回答
1698 浏览

ruby-on-rails - nil:NilClass Doorkeeper 的未定义方法“resource_owner_id”

我正在为我的一个 Rails 应用程序设置DoorkeeperOAuth2。我的目标是根据用户的 access_token 允许 api 访问用户,这样只有用户才能看到他们的 'user_show' json。到目前为止,我已经在“oauth2/applications”路线上设置并授权了我的开发和生产应用程序。

我的'/config/initializers/doorkeeper.rb'

我的 '/api/v1/user/controller.rb' 看起来像这样:

我试图访问 OAuth 应用程序表以查看正在创建的内容,但我无法在 rails 控制台中访问它。

提前感谢您的洞察力!

0 投票
2 回答
2194 浏览

ruby-on-rails - 访问授权和访问令牌之间的区别

我无法弄清楚 Doorkeeper 中 Token 和 Grant 之间的区别。什么时候,Doorkeeper 创建了一个访问授权,什么时候创建了一个访问令牌?文档似乎什么也没说,现在我正在阅读代码,但不是十几行。