问题标签 [devise-token-auth]

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 投票
2 回答
3187 浏览

ruby-on-rails - 为什么我无法使用 devise_token_auth 和 curl 退出?

我正在使用带有 devise_token_auth 的 rails-api 进行身份验证。我可以通过以下方式毫无问题地登录:

但是,注销失败并显示 404 和错误“用户未找到或未登录”。通过:

我已尝试使用参数和标头值的多种组合来更改此命令,例如:

无济于事。类似构造的 RSpec 测试也失败并出现相同的响应和错误,并且日志表明请求是通过 DeviseTokenAuth::SessionsController#destroy 作为 JSON 处理的。

当然,我实际上并没有使用 curl 进行身份验证。只是在编写相关代码之前验证请求结构。

0 投票
1 回答
438 浏览

angularjs - ng-token-auth,离子,devise_token_auth;令牌在 xhr 请求中随机丢失

我继承了一个 Ionic 应用程序,它使用ng-token-auth+devise_token_auth来处理身份验证和前后之间的会话。

发生的事情很奇怪。有时(特别是在连接速度较慢的情况下)请求(或响应)会丢失,之后我只会收到401http 错误。

我知道每次我发送请求时令牌都会过期,但是当xhr请求被取消时(我想是由服务器或浏览器,我不知道)令牌已过期而没有被新生成的替换由devise_token_auth宝石。

我知道 Rails,但我不熟悉 Angular,Ionic 也不熟悉,我也不知道该去哪里找。

在阅读了很多 SO 答案后,似乎没有人遇到我的问题(在本地和暂存/生产中发生),我检查了以下内容

  • storage设置为localStorage
  • config.batch_request_buffer_throttle = 20.seconds
  • 取消的请求之间没有模式,有时我为用户名执行获取,有时是帖子或评论。
  • 不是 CORS 问题,因为它总是会发生或永远不会发生。(此外,我正在使用代理,如ionic blog中所述)
  • 也许它可能与临时标题chrome 错误有关。但是,我怎么能确定呢?

令我困惑的是,它只是有时而不是总是发生。(并且后端没有错误)

在 devise_token_auth 文档中找到的唯一解决方法是更改config.change_headers_on_each_request​​为false避免以这种方式重新生成令牌。

但我不喜欢这种解决方案,因为我认为它以不安全的方式隐藏了真正的问题,而不是解决令牌丢失问题。有什么建议吗?

0 投票
1 回答
1386 浏览

ruby-on-rails - 具有多个模型和身份验证标头的 devise_token_auth

这是我的问题,我覆盖了用户模型的控制器:

这工作很好,没有问题。但是,当我使用相同的控制器添加新模型时:

他们管理模型的响应标头没有身份验证密钥。响应正常(200),但不返回 auth 标头。但是,如果删除 Admin 模型的控制器部分(覆盖),则响应将返回身份验证密钥。顺便说一句,覆盖只会改变控制器的渲染方法。任何可以帮助找到解决这个问题的方法?

0 投票
1 回答
884 浏览

ruby-on-rails - devise_token_auth 和使用 Facebook 登录的问题?

我正在同时使用 devise 和 devise_token_auth。我有一个 Ionic 2 应用程序,我正在尝试通过 Facebook 登录。现在,电子邮件/密码身份验证工作正常。这是我的一些代码。

在我的 Ionic 2 应用程序中如下

我试图修改和弄乱几个配置设置,但没有运气。当我检查我的服务器日志时,我一直看到这一点。它不会创建 Facebook 用户或任何东西。

编辑

还是想不通这个。我确实知道,当我尝试通过我的 Ionic 应用程序通过 Facebook 登录时,我的 Heroku 日志显示 Omniauth 只是在INFO -- omniauth: (facebook) Request phase initiated.. 它永远不会到达或尝试点击回调,因为否则它会说INFO -- omniauth: (facebook) Callback phase initiated.,它从来没有说过。话虽如此,如果我通过我的 Rails 站点手动执行此过程,则此过程有效,并且 Facebook 用户会得到保存。有什么想法为什么没有通过应用程序触发回调?我迷路了。

编辑

在这一点上,我什至不确定它是否正确实现了 Ionic 2 和 devise_token_auth Facebook omniauth 登录。可能是离子方面的问题吗?就像我说的,通过浏览器它似乎可以工作。我从字面上将/api/auth/facebook?.....下面的代码放在我的日志中并将其粘贴到浏览器中,然后它会插入用户。

如何让它与 Ionic 2 应用程序一起工作?似乎一切都通过浏览器工作,但是当我尝试通过 Ionic 继续 Facebook 登录时失败。这是我的 Ionic 2 登录代码:

还有我来自 Heroku 的日志:

通过应用程序,它似乎INFO -- omniauth: (facebook) Request phase initiated.每次都死掉。它永远不会进行回调。

0 投票
2 回答
921 浏览

ruby-on-rails - 无法将 devise_token_auth 与 active_admin 一起使用

我正在尝试将 devise_token_auth 与 active_admin 一起使用。运行时rails g active_admin:install User出现以下错误。

错误

usr/local/lib/ruby/gems/2.4.0/gems/actionpack-5.1.4/lib/action_dispatch/routing/route_set.rb:578:in add_route': Invalid route name, already in use: 'new_user_session' You may have defined two routes with the same name using the:as` 选项,或者您可能会覆盖已定义的路由具有相同命名的资源。

路线.rb

0 投票
1 回答
868 浏览

ruby-on-rails - Rails 5 API + Vue.js 前端:使用 devise_invitable 邀请用户的表单

我正在用 Vue.js 编写邀请表。邀请应该 POST 到 Rails 5 API。我正在使用devise_invitable邀请逻辑和电子邮件发送。但是,我在拦截该create方法时遇到问题,因为我将向多个用户发送邀请,所以我想为User.invite!参数中的每个用户执行一个。

我的邀请.vue文件,其中包含要发布的表单:

我的用户/invitations_controller.rb

我的路线.rb

我可以看到存在以下路线:

我在这里看到的问题是我希望路线看起来像这样:

此行为可能是由devise_token_authgem 引起的,我不确定如何纠正。

同样,当我提交此表单时,我希望能够拦截该create方法,然后调用User.invite!表单中列出的所有用户。我尝试在方法中添加byebugor ,但代码似乎没有执行,这意味着它被绕过了。binding.prycreate

我看到的错误信息是:

我不应该将表单数据传递给devise_invitablecreate 方法吗?任何帮助深表感谢。

提前致谢!

0 投票
0 回答
165 浏览

ruby-on-rails - rails api devise_token_auth 我如何在操作之前拥有多个用户

我对rails api 中的devise_token_auth有疑问。我需要三种不同类型的用户,每个用户都可以查看/编辑不同的东西。

但我不知道如何在每个用户的控制器中执行操作。例如,假设我有带有CRUD操作的“服务”控制器。

  • 我需要您是查看索引的三种类型的用户之一。如果您不是其中一种用户,您将无能为力。
  • 管理员可以全部 CRUD。
  • 其他两个用户只能 CR(create-read)。

你好吗?

0 投票
1 回答
1383 浏览

ruby-on-rails - devise 与 devise_token_auth:如何处理 Web 应用程序和 API 的身份验证

我正在编写一个主要通过 API 访问的应用程序,但也将具有通过 Web 应用程序进行编辑的视图。

我想在两个平台上创建一个具有身份验证和授权的用户模型。

我无法理解 devise 和 devise_token_auth 库之间的关系,除了前者推荐用于大多数 Rails 应用程序,后者非常适合仅 API 身份验证。

就我而言,使用什么合适的库,或者我应该同时使用两者?我应该通过设计生成用户模型,然后将令牌身份验证添加到其中吗?两个系统是否使用不同的身份验证方案?我只是想了解为什么 devise_token_auth 存在于设计之外。

我对基于令牌的身份验证增加的复杂性也有点困惑。简单地通过设计来注册和管理用户,为他们生成一个 API 密钥,然后让他们用它签署他们的 API 请求会有什么问题。为什么 API 中需要基于令牌的身份验证?

0 投票
1 回答
1568 浏览

ruby-on-rails - ActiveAdmin with devise

I have a project using devise_token_auth for authentication. I have installed Active Admin following this.

When I try to access localhost:3000/admin I get You need to sign in or sign up before continuing.

However, when I comment config.authentication_method = :authenticate_admin_user! in config/initializers/active_admin.rb, localhost:3000/admin opens the dashboard page.

My question is why am I not getting the login page for active admin?

0 投票
1 回答
578 浏览

ruby-on-rails - 使用 devise-token-auth 实现 google 登录服务器端流程

我找不到任何有关使用 devise-token-auth实现https://developers.google.com/identity/sign-in/web/server-side-flow的文档。我只有 Rails 5 API 应用程序。如果没有解决方法是什么?谢谢。