设计confirmation_token无效

2024-04-11

我的用户.rb:

class User < ActiveRecord::Base

    devise :database_authenticatable, :registerable,:confirmable,:token_authenticatable,
     :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:name]

我的路线:

devise_for :users, :controllers => { :sessions => "sessions", :confirmations => "confirmations", :passwords => "passwords", :registrations => "registrations" }

我的ConfirmationsController 是一个标准控制器,但具有不同的重定向。

我的电子邮件上有链接,例如:

/users/confirmation?confirmation_token=167bad44a15e02b0bd570b51e1bf927b88368d8855d92b9833a24017a2bad4be

在数据库中用户有

confirmation_token:167bad44a15e02b0bd570b51e1bf927b88368d8855d92b9833a24017a2bad4be

但是当我点击该链接时,我只看到包含以下内容的页面:

Resend confirmation instructions
 Confirmation token is invalid

我不做什么 - 我还必须设置什么。

确认控制器:

def resource_params
 params.require(:user).permit(:confirmation_token)
   end
   private :resource_params


  def show
self.resource = resource_class.confirm_by_token(params[:confirmation_token])

if resource.errors.empty?
  set_flash_message(:notice, :confirmed) if is_navigational_format?
  sign_in(resource_name, resource)
  session['new_user'] = true
  respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
else
  respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
end
  end

  protected
    # The path used after resending confirmation instructions.
    def after_resending_confirmation_instructions_path_for(resource_name)
      new_registration_path(resource_name)
    end

我说“标准控制器”是因为当我删除它并且不使用自定义控制器时,问题是一样的。


您使用的是哪个版本的设备?如果你在3.1.0或更高,此行为是预期的:

变更日志.md https://github.com/plataformatec/devise/blob/master/CHANGELOG.md

存储在数据库中的令牌不应与您在确认电子邮件中发送的令牌相匹配。看设计/lib/devise/models/confirmable.rb https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb,现在包含以下内容:

def confirm_by_token(confirmation_token)
  original_token     = confirmation_token
  confirmation_token = Devise.token_generator.digest(self, :confirmation_token, confirmation_token)

  confirmable = find_or_initialize_with_error_by(:confirmation_token, confirmation_token)

正如您所看到的,您通过查询字符串参数传入的令牌由Devise.token_generator,该操作的结果是与数据库中的令牌进行比较以发现用户记录。

看起来暂时可以(在 3.1 中但不是 3.2 中)通过设置来关闭此功能

config.allow_insecure_token_lookup = true

在您的设备初始化程序中。但默认行为已更改,以使设备更加安全。看这篇博文 http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/有关 devise 3.1 中安全改进(包括此更改)的完整概述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计confirmation_token无效 的相关文章

  • 当一组工作人员完成时如何执行 Sidekiq 回调

    假设我有一个 Sidekiq 任务将产品处理到我的数据库 每个产品都按商店分组 因此我的代码的一个过于简化的示例将是这样的 stores each do store store products each do product Produc
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 使用 Ajax 在输入时提交 Textarea,然后渲染部分内容而不刷新整个页面

    目前我正在尝试通过 JS 和 Ajax 在没有提交按钮的情况下发表评论 并且它有效 问题是当帖子提交时 页面重新加载到 post id comment页面 我希望它呈现部分内容 而不是刷新整个页面或将我带到不同的页面 我对 JS 不熟悉 任
  • git push heroku master 权限被拒绝

    我正在关注 ruby railstutorial 我运行命令 git push heroku master 它吐出了这个错误 Permission denied publickey fatal Could not read from rem
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • 如何从 Rails 中的 date_select 或 select_date 获取日期?

    Using select date给我回一个params my date with year month and day属性 如何轻松获取 Date 对象 我希望有类似的事情params my date to date 我很高兴使用date
  • 仅删除多对多关系

    我有一个 has and belongs to many friends join table gt friends peoples 要添加朋友 我会这样做 people followers lt lt friend这会创建关系和新的个人资
  • 我在 Rails 中使用了保留字吗?

    这是我的模型 class Record lt ActiveRecord Base belongs to user belongs to directory end class Directory lt ActiveRecord Base h
  • Rails - 渲染:目标锚标记的操作?

    我希望像这样使用渲染 render action gt page form 我也尝试过这个 render template gt site page form 那也没用 这个特定页面上的表单位于最底部 如果提交时发生任何错误 我不希望用户被
  • 获取嵌套参数

    我有一个带有嵌套参数的表单 在下面的示例中 如何获取控制器中的 amount whole 值 Parameters utf8 gt authenticity token gt KCmBI6RLh0LdUsM2r5H1vhNykS1IXecF
  • Windows 7 x64 上的 Ruby on Rails SQLite 问题

    当我尝试做的时候db create使用 Windows 7 x64 在具有此数据库配置的 sqlite 数据库上 development adapter sqlite3 database db development sqlite3 tim
  • Bundle 说 gem 丢失了 - 但事实并非如此?

    背景 我正在维护contentRuby On Rails 站点 但我确实没有 Rails 的经验 当尝试运行 Rails 服务器时 rails s我明白了 在任何来源中均找不到 activesupport 3 2 0 Run bundle
  • 为什么我收到“未定义的方法`assert_valid_keys`”?

    知道为什么我会收到此错误 Exception encountered
  • 如何加载页面特定的rails 4 js文件?

    我正在阅读资产管道的 Rails 指南文档 它指出 CoffeeScript 页面特定生成的文件 如果清单上有 require tree 指令 则默认情况下可供用户使用 这对我不起作用我必须包括这个 在特定控制器上 我缺少什么 资产管道会将
  • 如何向 Rails 应用程序添加自定义字体?

    我想在 RoR 应用程序中使用几种字体 但它们的格式主要是 ttf 和 otf 等 我该如何将这些文件嵌入到我的 Rails 应用程序中 也就是说 一旦我将它们放入我的资产文件夹中 将它们嵌入我的 CSS 和 或 LESS 文件中的语法到底
  • 如何为 ApplicationController 中 after_action 过滤器中的所有操作渲染 json?

    是否可以在 Rails ApplicationController 中创建一个 after filter 方法 该方法在每个操作上运行并呈现为 JSON 我正在构建一个 API 并且希望将控制器中的每个操作的输出呈现为 JSON 客户控制器
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • 如何在 Ruby 2.2 上删除不安全密码来强化 Rails+webrick+https

    更新 首先 我的测试代码没有充分显示 ruby 2 4 看到 SSLCiphers 选项 而 ruby 2 2 没有 我编辑了下面的示例代码以清楚地表明这一点 更新 由于我的问题未能得到社区的任何帮助 我继续前进 两天后找到了解决方案 我将
  • Ruby on Rails 服务器在 HTTPS POST 请求期间崩溃

    我正在尝试与你沟通城市飞艇API http urbanairship com docs push html broadcast使用 ROR Web 应用程序 在我的控制器中 我有以下代码 require net http require n
  • 仅针对 Rake 任务运行初始化程序

    我希望在执行 Rake 任务时运行某个初始化程序 但在运行 Rails 服务器时不运行 区分 Rake 调用和服务器调用的最佳方法是什么 Rake 允许您指定任务的依赖关系 最好的建议操作是将特定于 rake 的初始化放入其自己的任务中 而

随机推荐

  • 链轮 SASS 部分 ERB 延伸

    我注意到 使用最新的 Rails 和 sprockets 版本 3 2 1 和 2 2 0 将 erb 文件扩展名添加到 sass 部分时似乎存在问题 例如如果 somestylefilename css sass 重命名为 somesty
  • 是否可以在已经存在的对象中模拟单个方法?

    对于集成测试 我需要在 java 服务客户端中模拟特定方法 而不破坏其中的其余信息 它没有自构造函数 所以这样的解决方案是不可能的 private DBClient mockClient new DBClient alreadyExisti
  • MUI 文本字段上的省略号效果

    如何在 MUI 文本字段上添加省略号效果 他们有一个用于文本换行的多行选项 但我想要单行 像您可以做的那样换行文本
  • Xamarin:未找到绑定属性

    这个应用程序在 UWP 中运行得很好 除了在 Android 上失败的一个更基本的属性之外 我已经删除了所有内容 它看起来像这样 我的页面 xaml
  • 使用 apikey 从 Google Sheets API 获取 403 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在使用 Google Sheets 作为我的一些应用程序的简单数据后端 基本上 这些是 20 行 x 20 列 客户希望能够
  • 调整图像大小,同时保持纵横比

    大家好 我从互联网上下载了一张图像 需要将其大小调整为其大小的 1 4 同时保留其纵横比 关于如何最简单地做到这一点有什么想法吗 WebRequest requestPic WebRequest Create imageURL WebRes
  • 关于并行任务的 `srun ... >output_file` 的语义

    抱歉 这个问题需要大量的积累 但总而言之 它是关于许多并行实例的条件srun gt output file会或不会导致某些进程 任务破坏其他进程 任务产生的输出 案例 0 仅 bash 无 SLURM 假设prog 0 sh是以下玩具脚本
  • Overflow:hidden 隐藏边框但不隐藏溢出的元素

    我正在研究带有过渡的标题 但有些东西不起作用 我将 ul 设为 120px li 设为 60px 我给 li hover 一个translateY 60px 这样当您将鼠标悬停在 li 上时它就会弹出 我想隐藏溢出的内容 直到您将鼠标悬停在
  • 自定义日期选择器对话框

    目前 我正在使用经过修改的本机对话框来隐藏日期微调器 并且工作正常 但现在我想以这样的格式设置日期 当我旋转月份微调器或年份微调器时 对话框仅显示月份和年份而不是完整的日历日期 我的日期选择器对话框的自定义代码如下 Override pro
  • 如何同时按名称或标准差选择列?

    Solution 我采用了 thelatemail 提供的解决方案 因为我试图坚持使用 tidyverse 和 dplyr 我对 R 仍然很陌生 所以我正在采取一些小步骤并利用辅助库 感谢大家花时间贡献解决方案 df new lt df i
  • IE6 不解析加载的 JavaScript 文件(由 Google 托管的 Recaptcha)

    这是一个非常奇怪的问题 我尝试在其中一个网站上使用 Recaptcha 它适用于除 IE6 之外的所有测试浏览器 我参考了google的js http www google com recaptcha api challenge k the
  • 我如何知道机器上特定 Perl 安装最初提供了哪些模块?

    我如何知道机器上特定 Perl 安装最初提供了哪些模块 这是not的副本 如何判断 Perl 模块是核心还是标准安装的一部分 https stackoverflow com questions 2049735 如何判断 Perl 模块是核心
  • 在发布中部署 PDB 文件

    我有 CI 服务器设置来构建和部署我的所有环境 包括我的生产环境 据我所知 我的所有项目文件的设置和 CI 设置在我的暂存环境构建和生产环境构建之间都是相同的 但是 当我部署到生产环境时 并没有像暂存中那样与 DLL 文件并排放置 PDB
  • CSS“>”与“>”?

    In CSS a gt b是相同的 a gt b 但这两个符号中哪一个更正确呢 我看到在 Chrome 开发者工具中使用了第二个变体 两者都不是 更正确 两者同样有效 唯一的一点就是spec http www w3 org TR selec
  • 在 Ionic 2 中添加自定义图标

    我正在使用 Ionic 2 来开发我的应用程序 我想在我的应用程序中使用我的自定义图标 就像我们使用 ionic 2 图标一样标签 例如
  • 将库发布到 Maven 存储库

    我有一个稳定的开源库 http github com fernandezpablo85 scribe并想知道如何 以及是否 我可以将我的库发布到 Maven 官方存储库 以便人们可以将其包含在他们的pom xml文件并自动下载依赖项 将您的
  • sql server 查询中的明智移位日期时间检查

    我的一个项目中的 sql 查询有一个问题 实际上 我必须检查某个具有三个班次的表中的一个 DateTime 列 即 我必须根据相应班次中的 RegisteredDateTime 列获取记录 我们的轮班时间如下 轮班时间为 24 小时制 Sh
  • Python-PostgreSQL psycopg2 接口 -->executemany

    我目前正在分析维基百科转储文件 我使用 python 从中提取大量数据并将其保存到 PostgreSQL 数据库中 我总是试图让事情进展得更快 因为这个文件很大 18GB 为了与 PostgreSQL 交互 我使用 psycopg2 但该模
  • 自动扩展 Axon 的跟踪事件处理器

    我使用 Axon 框架 4 0 3 和 Spring Boot 来进行事件溯源 并有一个跟踪处理器 该处理器配置为具有多个段 线程来同时处理事件 axon eventhandling processors my processor init
  • 设计confirmation_token无效

    我的用户 rb class User lt ActiveRecord Base devise database authenticatable registerable confirmable token authenticatable r