问题标签 [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 投票
1 回答
56 浏览

ruby-on-rails - 如何使用 devise_token_auth 打开对我的应用程序的 API 请求?

我在我的 rails 应用程序中使用 devise_token_auth。我希望使用特定于用户的令牌为我的应用程序打开 api,这将使他们能够有限地访问我的应用程序中的某些 api。它应该类似于当前的公钥和私钥设置,用于与 facebook、google、stripe 等应用程序集成。我应该使用什么?是否有任何好的文档/示例应用程序来实现这一点?

0 投票
1 回答
407 浏览

ruby-on-rails - 如何使用设计强制注销除 current_user 之外的用户

我需要在管理站点创建一个功能,允许管理员强制注销任何用户。

我正在使用设计基于令牌的身份验证和尝试过的sign_out user方法,它不起作用。

0 投票
1 回答
406 浏览

ruby-on-rails - devise_token_auth 忘记密码 API 显示 Use POST /sign_in to sign in. GET is not supported 错误

遵循此解决方案https://stackoverflow.com/a/47761138/7818637我正在使用devise_token_authgem 进行身份验证的 Rails 上设计忘记密码流 API。

1. 发送密码重置电子邮件的 POST 调用

网址:http://localhost:3000/client/auth/password

表单数据:{email: 'john@gmail.com', redirect_url: 'http://localhost:3000/client/auth/sign_in'}

拨打电话以发送密码重置电子邮件

2. 验证密码重置令牌的 GET 调用(在电子邮件中单击)

我在控制台上收到以下 URL,其中包含redirect_urland reset_password_token

http://localhost:3000/client/auth/password/edit?config=default&redirect_url=http%3A%2F%2Flocalhost%3A3000%2Fclient%2Fauth%2Fsign_in&reset_password_token=ZBsx64Gk1VBraM3THZTn

当我调用此 URL 时,我收到以下错误:

调用以验证密码重置令牌

我已经尝试过的:

按照这里的问题,我发现我已经include DeviseTokenAuth::Concerns::SetUserByToken在我的控制器中使用了。

控制台日志:

控制台日志

0 投票
0 回答
34 浏览

ruby-on-rails - 检查注册参数后,如何在 Rails API 控制器中创建 JSON 响应以在 React Native 中使用?

设置

  • 前端 => React Native
  • 后端 => Rails API

上下文:我正在尝试使用 devise & devise-token-auth 创建用户身份验证流程。我的路线和请求似乎在 rails 控制台和使用 Postman 工作,但是我现在想生成在我的前端使用的响应。

关键问题:如何检查注册参数:

  • 1) 已输入
  • 2) 有效
  • 3) 不重复

然后渲染一个可以在我的前端使用的 JSON 状态码?

0 投票
0 回答
220 浏览

ruby-on-rails - 使用设计令牌身份验证覆盖 Rails API 中的注册控制器时出现路由错误

我正在尝试发送 POST 请求(使用 Postman)以使用设计令牌身份验证注册新用户,并且我正在覆盖注册控制器以启用我自己的 JSON 响应。

我不断收到路由错误:

这是我的注册控制器:

这是我的路线文件:

我的路线哪里出错了?

0 投票
1 回答
409 浏览

ruby-on-rails - Rails 返回 401 Unauthorized for User Auth Flow - Rails, devise gem, Devise_token_auth gem

我第一次尝试将我的 React Native 前端连接到我的 Rails API 后端。为此,我正在使用用户身份验证流程,更具体地说,是登录(通过 User.create 和 User 模型在数据库上创建用户)。

我已经设置了前端来使用 Redux 并发送一个 fetch 请求,将表单中的数据作为 JSON 发布到 rails。数据毫无问题地进入 Rails。

但是,问题似乎来自 Rails,我在控制台中得到一个 401,401 Unauthorized参数通过Parameters: {"session"=>{}}. 为什么会这样,我该如何解决?我在 SO、GitHub 和一些独立的表单上尝试了一堆解决方案,但没有任何效果。

本质上,我想要的操作是让 React 发送在用户名和密码中提交的用户数据(到目前为止似乎一切都很好),Rails 在覆盖的会话控制器中处理用户名和密码(它似乎正在这样做)并返回一个“成功”状态和用户身份验证令牌,我们可以将其存储在本机反应中。

React Native的SignInAction.js

Rails中的Routes.rb

Rails中的/api/v1/overrides/sessions_controller.rb

0 投票
2 回答
179 浏览

ruby-on-rails - Rails 控制器中的 DRY 概念

我正在开发我的第一个 rails api 服务器。

我的User模型有一个控制器,看起来像这样:

对于这两种控制器方法,我想要并且目前拥有的是:

  • /users仅当发出请求的经过身份验证的用户具有角色时才获取所有用户admin
  • /users/:idid仅当发出请求的经过身份验证的用户具有匹配id或具有角色时才获取用户admin

当前的实现打破了 DRY 理念。原因是处理请求用户是否有权访问所请求资源的逻辑在两个控制器方法中重复。此外,任何模型的控制器方法show都会重复检查请求的资源是否存在的逻辑。我也觉得这种实现方式适用于胖控制器,我宁愿它们是瘦的。

我想从社区和以前解决过这个问题的人那里知道什么;为了符合 DRY 理念并保持控制器瘦身,最好的方法是什么。

很高兴知道:我正在使用devisedevise-token-auth进行身份验证。

0 投票
0 回答
112 浏览

ruby-on-rails - Rails 中嵌套属性错误的自定义哈希

我有针对用户模型的地址和电话关联,这意味着用户可以有多个地址和多个电话。

在我使用 devise_token_auth gem 的注册时,我必须存储 1 个地址和 1 个电话。

用户.rb

application_controller.rb

问题

如果我发送的地址和电话属性为空/无效,我将收到如下错误 JSON:

继文章Errors can be indexed with nested attributes in Rails 5 by usingindex_errors: true之后,我收到错误 JSON 为:

我真正需要的是以下内容,我可以轻松地用任何语言遍历:

0 投票
2 回答
690 浏览

ruby-on-rails - devise_token_auth 与非设计路线的设计

我正在尝试使用“enable_standard_devise_support = true”让 devise + devise_token_auth 一起工作,而无需复制每个控制器,一个用于 Web,一个用于 API。

我在初始化程序中打开标准设计支持

并将我的路线设置为嵌套

主路由仍在 API 之外

我有一个 API application_controller.rb ;

和一个 application_controller.rb ;

为什么我的其他路线(例如 home#index)不起作用?

我从 devise_token_auth 访问 /home.json 区域得到的错误

这是家庭控制器

更新:使用 curl 进行测试

这是我的模板代码:https ://github.com/map7/backend_rails6_template

如果我使用 curl 命令测试 API,我可以复制问题;

在提交“102bb24”时,主路由的 API 已损坏,但 Web 视图工作。

登录

获取带有凭据的下一页(请注意,您必须粘贴从登录标头返回的客户端和访问令牌)

我得到的错误

注意:要查看工作示例,请先尝试提交“e475478”。此提交适用于 API,但不适用于 Web 视图。

0 投票
1 回答
55 浏览

ruby-on-rails - 未使用 angular-token 设置身份验证标头

我刚开始使用angular-token的 Angular 应用程序和使用devise-token-auth的 rails 后端,我在登录组件中有下一个“on-submit”:

使用 Chrome 的 DevTools 检查时,登录成功,并且后端返回了我用邮递员测试的良好凭据标头(uid、访问令牌、客户端)。问题是,在加载目标页面“产品”时,用于填充该新页面的 httpClient 调用(我将调用放在解析器中以在“产品”调用完成之前不呈现任何内容)不包括任何身份验证标头,所以当然,我得到一个 401 non-authorized 错误,因此 angular-token 似乎没有根据我使用 .signIn 方法获得的标题正确更新标题。

  • 如何确保正确发送标头?
  • 我在哪里检查他们是否真的到达订阅的“res”
    • 可以看出,我 console.logged 它并且我看不到该变量中的任何标题,尽管我在 devTools 的“网络”选项卡中看到它们。