问题标签 [devise-jwt]
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.
ruby-on-rails - 从 ApplicationCable 访问 env['warden'].user 为 nil
所以我试图dervise-jwt
在 Rails 5.2 应用程序中实现。我的登录工作正常,并且正在创建令牌。话虽如此,我想current_user
从我的 ActionCable 访问相同的内容。按照一些在线教程,我的app/channels/application_cable/connection.rb
样子是这样的:
当我调试代码时,env['warden'].user
为零。我必须做什么才能current_user
通过守望者访问?
ruby-on-rails - Rails 设计-jwt 会话存储
devise-jwt gem 文档说,如果启用了会话存储,则必须跳过它以进行 jwt auth。它说你应该在 devise.rb 上设置:
你应该禁用 :database_authenticable。这部分我完全不明白。如果在我的用户模型中,我删除:database_authenticable,我为登录配置的路由变得不可用:
ActionController::RoutingError (没有路由匹配 [POST] "/login"):
用户.rb
设计.rb
路线.rb
我应该怎么做才能保持会话,而不是 jwt auth?
ruby-on-rails - Devise-JWT:使用 cURL 我可以看到一个授权标头。使用 Axios/Fetch 没有 Authorization 标头
我有一个非常典型的带有 Devise 和 Devise-JWT 的 Rails 后端。当我向端点发出原始 cURL 请求时,/users/sign_in
我可以在标头中看到它正在使用令牌设置授权标头。
当我在我的 React 前端(在不同的端口上,因此需要跨源配置)上执行相同的请求时,我在结果中看到的唯一标头是缓存控制和内容类型。
现在,我已经安装了“cors”gem。我创建了一个名为的初始化程序config/initializers/cors.rb
,并将此配置放入其中:
然而,当我在我的 React 前端发出请求时,我看不到 Authorization 标头。
我可以看到 Rails 正在响应 302 重定向。这是问题的一部分吗?我是否需要配置设备以停止响应 302?
我完全不知道问题可能是什么。
如果您观察下面的屏幕截图,通过普通表单登录以正常方式登录会给我一个 Authorization 标头,但如果我通过 AJAX 进行,则没有标头。
这是前端(AJAX)代码,它没有给我任何授权标头,只有“缓存控制”和“内容类型”:
结果:
ruby-on-rails - 尝试访问受 Devise JWT 保护的 API 时出现“没有可用的验证密钥”
我已经devise-jwt
安装了宝石。我可以执行登录请求,并收到一个授权令牌作为回报,但是当我尝试访问安全端点时,我收到以下消息:No verification key available.
这是我的config/initializers/devise.rb
文件中的内容:
我可以正常登录并收到授权令牌:
似乎我也暴露了 Authorization 标头:
我的用户模型:
我很困惑,任何帮助表示赞赏。谢谢。
ruby-on-rails - 如何阻止设计尝试重定向到 /users/sign_in 以获取 API 请求?
在我的反应前端,我有一个 API 请求,它通过 axios 库发送到我的 ruby on rails 后端:
执行上述请求时,我在后端日志(ruby on rails)中看到以下响应链:
该.catch
块永远不会被调用。当我查看响应时,我看到 2 个成功的 200 个响应。401 响应不会显示在前端。
我正在尝试捕获 401 状态代码,然后通过我的反应前端向用户显示登录表单。后端(设计 gem)试图将我重定向到 /users/sign_in,这不是我想要发生的。我只想要一个 401 以便我的反应应用程序可以显示自己的登录表单,但由于我不知道的原因,axios 只显示具有 200 个状态的响应。
ruby-on-rails - ROR:devise-jwt:如何调用 jwt_revoked?功能?
我正在为我的 ror api 使用 devise 和 devise-jwt。如果发送的用户不记名令牌被撤销,我想知道用户(通过 api 调用)。
我做了这条路线:
但它给我带来了这个错误:#<NoMethodError: undefined method `jwt_revoked?' 对于#用户:0x0000558992eb9b98>
我在我的模型中使用这个 jwt_revocation_strategy: JwtBlacklist:
如何调用 jwt_revoked?功能 ??
谢谢
ruby-on-rails-5 - JWT::DecodeError for sign_out with invalid token with devise-jwt
我正在尝试从使用 devise 注销时由无效令牌引起的 JWT::DecodeError 中救援。但它不起作用。我不断收到 JWT::DecodeError。会话控制器:
ruby-on-rails - API Rails:如何使用 Devise 和 JWT 制作 RESTFul API?
我正在尝试使用 devise & jwt 构建一个 RESTFul API。
我可以使用 Postman 使用我的 jwt 熊令牌进行注册和登录/注销。
现在我想发布文章时遇到问题。
我不明白为什么在我用 Postman 发布文章后我的控制台会登录。
我也不明白为什么我会收到这个 401 错误。用 RESTFul + API + Devise + JWT 真的很难找到一些内容。
从长远来看,您认为有或没有 Devise 运行更好吗?因为实际上有些内容没有设计。
我在 Postman 上尝试的东西
当我使用 Postman 发布文章时从控制台返回 ERROR 消息(并且使用与登录/注销相同的熊令牌
应用程序/控制器/articles_controller.rb
db/shema.rb
应用程序/模型/article.rb
应用程序/模型/user.rb
ruby-on-rails - Rails API + Devise + JWT上的注销问题
我正在构建一个 Rails API。我所有的设计路线都运行良好,只执行一个:注销。
我遵循了本教程:https ://jameschambers.co.uk/rails-api
我已经尝试了几件事,例如:
- 尝试了 api/logout.json 路由
- 尝试将 rb #111 更改为: config.skip_session_storage = [:http_auth, :params_auth] ( config/initializers/devise.rb )
- 试图将 rb #280 更改为: config.sign_out_via = :get ( config/initializers/devise.rb )
我在这个地址上发送一个 DELETE 请求:localhost:3000/api/logout,带有 JWT/Bearer 令牌。
错误
铁路路线
数据库/schema.rb
应用程序/控制器/sessions_controller.rb
应用程序/模型/user.rb
配置/路由.rb
ruby-on-rails - 使用 devise-jwt 进行测试时添加 Bearer 令牌的更简单方法?
我正在做请求规格。我们使用devise-jwt进行身份验证,因此我需要将Authorization
标头放在每个需要调用权限的请求中。
我阅读了 Devise JWT 的文档,所以我知道我可以使用
但是,Devise::JWT::TestHelpers.auth_headers
, 似乎只是合并{"Authorization" => "Bearer JWT-TOKEN"}
到传入的标头哈希中。
为什么我不能直接拥有 hash {"Authorization" => "Bearer JWT-TOKEN"}
,可以吗?
或者我真正的问题是为什么它需要 Warden::JWTAuth::HeaderParser.to_headers 在auth_headers
方法中?那是干什么用的?