首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让Devise和JWT与我的Versioned API Rails控制器一起工作?

Devise是一个用于身份验证和用户管理的流行Ruby on Rails插件,而JWT(JSON Web Token)是一种用于在不同系统之间传输安全信息的标准。在Versioned API Rails控制器中同时使用Devise和JWT可以实现用户认证和授权。

下面是一种实现方式:

  1. 首先,确保你已经安装了Devise和JWT相关的Gem包。可以在Gemfile文件中添加以下内容并运行bundle install来安装这些依赖:
代码语言:txt
复制
gem 'devise'
gem 'devise-jwt'
  1. 在终端中运行以下命令来生成Devise的用户模型和配置文件:
代码语言:txt
复制
rails generate devise:install
rails generate devise User

这将生成一个名为User的模型,并生成与Devise相关的配置文件。

  1. 在生成的User模型中,使用Devise的:jwt_authenticatable模块替代默认的:database_authenticatable模块。这将允许用户通过JWT进行认证。确保在模型中添加以下内容:
代码语言:txt
复制
class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable,
         :jwt_authenticatable, jwt_revocation_strategy: JWTBlacklist
end
  1. 创建一个名为JWTBlacklist的新文件,并添加以下内容:
代码语言:txt
复制
class JWTBlacklist < ApplicationRecord
  include Devise::JWT::RevocationStrategies::Blacklist

  self.table_name = 'jwt_blacklist'
end

这将创建一个与Devise关联的黑名单,用于使过期的JWT无效。

  1. 在配置文件config/initializers/devise.rb中添加以下内容来配置JWT:
代码语言:txt
复制
Devise.setup do |config|
  # ...

  config.jwt do |jwt|
    jwt.secret = ENV['DEVISE_JWT_SECRET_KEY']
    jwt.dispatch_requests = [
      ['POST', %r{^/api/v[0-9]+/login$}]
    ]
    jwt.revocation_requests = [
      ['DELETE', %r{^/api/v[0-9]+/logout$}]
    ]
    jwt.expiration_time = 1.day.to_i
  end

  # ...
end

这里设置了JWT的密钥、请求路径和过期时间等信息。

  1. 在Versioned API Rails控制器中,你可以通过以下方式来实现Devise和JWT的工作:
代码语言:txt
复制
class Api::V1::YourController < ApplicationController
  before_action :authenticate_user!
  respond_to :json

  # 其他操作方法...
end

这将在Versioned API Rails控制器中启用身份验证,并将其限制为只允许经过身份验证的用户访问。

这样,当用户访问Versioned API Rails控制器时,Devise和JWT将一起工作。用户在登录时将获得一个JWT令牌,然后在每个请求中将该令牌添加到请求头中进行身份验证和授权。你可以使用其他适合你的方法来处理这些请求头。

除了这些步骤,还有一些其他的配置和定制化选项可供参考,比如添加注册、密码重置等功能。更多细节可以参考Devise和JWT的官方文档。

希望这个回答对你有所帮助!如果你需要更多关于云计算或其他相关领域的帮助,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于 Node.js 认证方面的教程(很可能)是有误

同时我也一直在 Node/Express 中寻找强大、一体化解决方案,来与 Rails devise 竞争。...如果你想要一个类似于 Plataformatec devise Ruby on Rails 强大解决方案,你可能会对 Auth0 感兴趣,它是一个使认证成为服务开创项目。...请注意: 我不是故意针对这些教程开发人员,而是使用他们身份验证所存在漏洞后会自己身份验证系统产生安全问题。如果你是教程作者,请在更新教程后随时与我联系。...也许我们初级 Node.js 开发人员曾经听说过 JWT,或者看到过 passport-jwt,并决定实施 JWT 策略。无论如何,接触 JWT 的人都会或多或少地受到 Node.js 影响。...如果你真的需要强大生产完善一体化身份验证库,那么可以使用更好手段,比如使用具有更好稳定性,而且更加经验证 Rails/Devise

4.6K90
  • oauth 流程_简明同义词典

    维基百科: OAuth(开放授权)是一个开放标准,允许用户第三方应用(网站/app)访问该用户在另一网站(qq, 微博,微信等等)上存储私密资源(如照片,视频,联系人列表),而无需将用户名密码提供给第三方应用...(笔记摘录) 目标 OAuth2 协议怎么运行 看懂基于OAuth2第三方API 知道怎么用Oauth2 锁你API(不理解) 课表 Oauth2是什么 通信协定怎么跑 制造Oauth2...不需要User, 只存取公开资料, Client Credentials Grant Flow 160页 发生错误时回应方式171页 ---- 拿到Token了,如何API (RFC6750 ‘...就上手(244页, 有详细步骤) 用Devise生成User(Resource Owner) 用Doorkeeper盖 Authorization Server 用Grape盖API (Resource...Server) 自己刻 Resource Server Guard 来锁api 第2步骤: rails g doorkeeper:install rails g doorkeeper:migration

    1.5K10

    Rails 从入门到完全放弃

    相比PHP,可以达到Rails : PHP = 1 : 4 效率。但对于一个技术架构成熟技术团队来说,放弃原有的技术架构去使用一个从未接触过新技术,时间成本决心是很重要。...为了能够掌握最新版本知识,下载了相应英文版PDF,一起结合。修炼Rails过程是痛并快乐着,因为要转变思维模式,去接受新思想,去了解诸多语法糖因何而生。...Devise OmniAuth 这两个Gem使用不多,在尝试过Devise之后,还是得自己手写一遍登录等功能,第三方登录开始有考虑用,后面发现还用不上就没有研究了。...前端JS处理 随着JS增多,维护起来会越来越难,在Rails项目中并没有做JS模块化,而是将JS用工厂模式汇集到了一起,新功能代码会放到工厂车间去,在使用时候 new 一个工厂,调用需要功能即可...融合Elixir特性,多线程成为利器,利好多多,如果可以,你应该像我一样去深入研究下Phoenix,还有你们常用Devise也是Phoenix作者写

    2.2K20

    精选 Flexport 在 HackerOne 这一年 6 个有趣安全漏洞

    修复: 短期修复方案是在用户输入传递给 Bootbox 展示之前,将所有可能 XSS 相关标签删除(JSXSS 提供了一个节点模块这部分变得很简单)。...对所有在 React 之外工作库都不能信任,并且要尽可能地避免使用它们。...一开始,我们收到一份报告,展示了如何通过暴力攻击来获得已泄露用户访问权限。 ? 原因: 我们使用 Authy 作为我们 2FA 合作伙伴,他们 rails gem 不包括任何内置速率限制。...Authy rails gem hook 住 Devise (一个受欢迎 rails 认证/用户管理库),并在登录后使用以下代码要求 2FA: def check_request_and_redirect_to_verify_token...result end 这会用户重新登录。

    2.3K80

    最受推荐 9本全栈开发书籍,助web前端开发学习

    最后,你还将了解如何使用Laravel Passport来处理VueAPI之间经过身份验证AJAX请求,从而完成整个堆栈结构。...3、《Rails, Angular, Postgres, and Bootstrap》 Rails是构建web应用程序一个很好工具,但不是最好,通过Angular 4、BootstrapPostgreSQL...结合可以构建一个功能更加强大应用,本书涵盖了Postgres 9.5、Rails 5Ruby 2.3。...Angular 5ASP.NET Core 2功能特性结合在一起,实现全栈开发 通过本书,你将学习如何使用Angular 5功能,使用Entity Framework Core构建数据模型,使用...前端就是网站门面,它价值远大于其他客户端开发。有想学习web前端,或是转行,或是大学生,还有工作中想提升自己能力,正在学习小伙伴欢迎加入。我们会一起结伴同行。

    4K10

    框架分析(6)-Ruby on Rails

    框架分析(6)-Ruby on Rails 主要对目前市面上常见框架进行分析总结,希望有兴趣小伙伴们可以看一下,会持续更新。希望各位可以监督我,我们一起学习进步。...约定优于配置 Rails框架倡导“约定优于配置”开发理念,通过一系列约定规则,减少开发人员在配置方面的工作。...例如,Rails会根据命名规范自动映射URL路径到控制器动作,减少了手动配置路由工作。...RESTful路由 Rails框架支持RESTful风格路由,通过简单配置,可以将URL路径与控制器动作进行映射。这使得开发人员可以更容易地创建符合RESTful设计原则API接口。...优缺点 优点 快速开发 Rails框架采用了“约定优于配置”开发理念,通过一系列约定规则,减少了开发人员在配置方面的工作

    32120

    以太坊区块链 Asp.Net Core安全API设计 (上)

    这种方式不实用,并且有一些用户体验限制,我们需要一种方法用户证明他拥有与他想要用来登录帐户相关私钥,而不是只(当然)要求私钥,而不管他是否进行交易。...验证方法首先通过接受签名明文消息作为输入函数从签名中推断帐户(也称为公钥)。如果计算以太坊地址等于用户提供帐户,则为该帐户发出JWT Token。...为了与我用户合作,我们还需要配置Cors策略。...控制器,核心方法,AuthenticateAuthenticate2尚未实现。...一旦实现,他们将完成相同工作:从签名中恢复以太坊地址,并检查它是否等于客户端提供以太坊地址。

    1.2K30

    使用Eclipse MicroProfile(更新版)构建您下一个微服务

    本快速教程将向您展示如何使用最新版本Eclipse MicroProfile API构建您下一个微服务。...现在有很多提供API服务器框架,这意味着您可以继续使用相同API性能来选择最好工具来运行您微服务。本文是一个使用MicroProfile API构建下一个微服务快速教程。...配置管理 容错 指标 健康检查 智威汤逊(JWT)授权 类型安全REST客户端 开放API 开放分布式追踪 这些规范组在一起成了Eclipse MicroProfile 1.3。...初始项目设置 那么你如何利用这些项目呢?这个快速指南可以教你编写你第一个应用程序。MicroProfile仅指定了API行为,但不包含指定功能。这是由Payara Micro提供功能实现。...那么典型微服务是什么样? 一个JAX-RS控制器。由于我们公开了REST API,我们希望控制器能够处理API调用。 某种服务。您需要一些支持组件来生成或使用数据。

    2.8K20

    推荐17-Laravel 中使用 JWT 认证 Restful API

    在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 restful APIJWT 代表 JSON Web Tokens 。...我们还将使用 API 为用户产品创建功能齐全 CRUD 应用。 在使用跨平台应用程序时, API 是一个非常不错选择。除了网站,您产品可能还有 Android iOS 应用程序。...说明 我们先写下我们应用程序详细信息功能。我们将使用 JWT 身份验证在 laravel 中使用 restful API 构建基本用户产品列表。...构建产品部分 要创建产品部分,我们需要 Product 模型,控制器迁移文件。运行以下命令来创建 Product 模型,控制器迁移文件。...然后我们删除产品后并根据删除操作成功状态返回适当响应。 控制器代码现在已经完成, 完整控制器代码 在这。 测试 我们首先来测试身份认证。

    11K20

    Rust 不适合开发 Web API

    Node.js 有 passport.js,Railsdevise,Django 有开箱即用身份验证模型,在 Rust 中,你需要学习如何将共享 Vec 转换到底层加密库才能构建这个系统(译者注...2Rust 编译器比以前快,但仍然很慢 我一直在看 Nicholas Nethercote 博客,描述了 Rust 团队如何优化编译器,它更快! 但与其它编程语言相比,用它构建网站会很慢。...3Rust 很复杂 Rust 你从代码维度进行思考,这对系统编程来说非常重要。它你思考如何共享或复制内存,思考真实但不太可能小概率事件,并确保妥善处理它们,帮你编写各种各样高效代码。...这是它宣传语中重要部分,这是绝对正确:Rust 承诺安全底层两者兼而有之——它可以在没有垃圾收集器情况下工作,同时防止基于内存漏洞。...我确信 Facebook 内部有一些特定数据库与 GraphQL 结合在一起使用效果非常棒,但业内其他企业则非常依赖 Postgres 同类产品。

    2.2K10

    DartVM服务器开发(第八天)--http服务端框架

    例如,GitHub API公开组织,存储库,问题拉取请求资源; 社交网络API具有配置文件,帖子用户关系。...控制器链接在一起以形成一系列要为请求采取操作。这些链接在一起控制器称为通道。如果将上述示例链接在一起,则通道将在发送包含数据库行响应之前检查请求是否已获得授权。 有两种控制器。...服务对象目的是为更详细行为提供简单界面。例如,数据库连接是服务对象; 数据库连接用户不知道如何建立连接或如何将查询编码到线路上详细信息,但它仍然可以执行查询。 服务对象主要用户是控制器。...这个实现很容易定制 - 它可以在不同类型数据库中存储授权工件(如令牌客户端标识符)或使用JWT等无状态授权机制。默认实现利用Aqueduct ORM在PostgreSQL中存储工件。...会话管理 使用简单类似Map界面读取更新会话数据。 JWT代币 关于JWT令牌会话。 身份验证授权 密码验证。

    2.6K40

    Node.js-具有示例API基于角色授权教程

    示例API仅具有三个端点/路由来演示身份验证基于角色授权: /users/authenticate - 接受body中带有用户名密码HTTP POST请求公共路由。...共享组件文件夹包含可以供应用程序多个功能其他部分使用代码,并带有下划线前缀,以将它们分组在一起,因此可以一目了然地轻松查看内容。...如果将角色参数留为空白,则路由将被限制到任何经过身份验证用户,无论角色如何。在用户控制器中使用它来限制对“获取所有用户”“按ID获取用户”路由访问。...路径:/users/users.controller.js 用户控制器api定义了所有用户路由,路由定义在文件顶部分组在一起,并且路由实现在下面。...重要说明:api使用“"secret”属性来签名验证用于身份验证JWT令牌,并使用您自己随机字符串对其进行更新,以确保没有其他人可以生成JWT来获得对应用程序未授权访问。

    5.7K10

    MongoDB5.0版本新特性速览

    该抽象层允许用户始终将数据作为原始单个文档来进行处理,因此用户不需要再关系时序数据是如何存储持久化,只需要关注业务层该如何使用或分析这些时序数据即可。 如何使用?...中间涉及到代码变更,驱动升级,全面的兼容性测试等等都带来了大量工作量。...Versioned API可以在这样场景下发挥作用,也就是说数据库升级到了更新版本,但是存量业务还是会使用旧版API来进行访问。不会存在不兼容问题。...换句话说,该功能 将应用程序生命周期与数据库更新彻底解耦了 。 [versioned API.png] Live Resharding 尝试彻底解决数据库初始建模不合理问题 。...自动更新server版本,会利用 Versioned API 能力 可能是看到其他云服务提供商基于MongoDB在做类似的事情,官方决定自己下场做了,让我们期待一下。

    3.7K30

    Laravel 开发 RESTful API 一些心得

    // more }); 如果前端想跨域,请使用这个很方便包barryvdh/laravel-cors 一个简单接口示例 接口代码 验证 API 开发总会离不开验证,这里推荐使用jwt-auth...,1.0 快要来了,新版本文档也很清晰 刚用jwt-auth时有疑问,Laravel自带token验证使用是数据库api_token字段验证,而不见jwt-auth需要这个 然后想自己看源码,结果...异常 异常算是一大手笔了,处理好异常,可以代码优雅很多。...,然后粘贴到api.json文件 swagger 记得也把写好格式保存到api.yaml,因为清楚缓存之后,下次访问时会消失 自己写了一个packages 就方便创建控制器,验证 所有控制器继承重写过基类...:laravel-api-helper 工作API开发有关,用到其他有经验了再回来补补。

    41110

    不要学习“网红”编程语言

    私底下使用 Ruby 解决此问题,尽可能在管理层发现不了情况下工作。 创建一个草根阶级联盟,通过培养文化方式培养 Ruby 布道者。...剩下工作 Ruby 完成就可以了。不过,为了建立你试点项目,你首先需要创建一个案例, Ruby 看起来足够吸引眼球,从而大家甘心冒这个风险。接着,你得在你试点策略里面添筋加骨。...在所有 HubSpot API 实施意见中,Ruby 版本的人气(根据 stars forks 判断)更新频率都是最低。...2010 年时 Ruby SDK API 客户端都是最亮眼,之所以出色,是因为当时 API 与 SaaS 开发团队往往会自己动手编写 Ruby 版本,所以客户端质量自然不在一个层面上。...2010 年那会 Rails 成功催生出使用模型视图控制器(MVC)架构建立快速应用开发(RAD)框架市场需求。

    2.1K30

    「容器云架构」基于NGINX Kubernetes控制器

    NGINX Plus用户还为有状态应用程序获得会话持久性,为api获得JSON Web Token (JWT)认证。...KubernetesNGINX入口控制器如何工作 默认情况下,Kubernetes服务豆荚不能从外部网络访问,只能通过Kubernetes集群中其他豆荚访问。...需要提供对Kubernetes服务外部访问用户创建一个定义规则入口资源,包括URI路径、支持服务名称其他信息。进入控制器然后可以自动编程一个前端负载均衡器,以启用进入配置。...在上面的示例中,我们使用注释来定制Ingress控制器,方法是启用对咖啡服务会话持久性,并配置JWT验证。...有关可以使用NGINXNGINX Plus在Ingress控制器上配置所有附加功能详细列表,请参阅存储库。

    1.3K20

    Laravel 开发 RESTful API 一些心得

    验证 API 开发总会离不开验证,这里推荐使用jwt-auth,1.0 快要来了,新版本文档也很清晰 刚用 jwt-auth时有疑问,Laravel自带token验证使用是数据库apitoken字段验证...后来才想起,jwt一开始就运行 php artisan jwt:secret生成了秘钥,你不泄露就保证安全了~~~ 路由 当然使用官方 api路由 Route::apiResource(),一条更比五条强...异常 异常算是一大手笔了,处理好异常,可以代码优雅很多。 \App\Exceptions\Handler::render方法可以捕获到很多有用异常,例如,我代码是这样写: ?...记得也把写好格式保存到 api.yaml,因为清楚缓存之后,下次访问时会消失 自己写了一个packages 就方便创建控制器,验证,所有控制器继承重写过基类,响应输出方便。...更多使用:laravel-api-helper(https://github.com/DavidNineRoc/laravel-api-helper) 工作API开发有关,用到其他有经验了再回来补补

    3.9K90
    领券