Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 仅在确认电子邮件后发布_Ruby On Rails_Ruby_Email_Authentication - Fatal编程技术网

Ruby on rails 仅在确认电子邮件后发布

Ruby on rails 仅在确认电子邮件后发布,ruby-on-rails,ruby,email,authentication,Ruby On Rails,Ruby,Email,Authentication,Rails中的伙计们,我如何实现确认电子邮件,使得非用户只能在确认电子邮件后才能发布。因此,任何没有帐户的普通人都可以查看站点、提交帖子、验证电子邮件,然后帖子就可以激活。我已经安装了Desive,但它似乎更适合验证用户。实现上述功能的方法是什么?是否有特定的gem可供使用?我认为您需要以不同的方式思考 在您的帖子列表/显示操作中,您可以为活动用户显示帖子,因此,如果用户未确认其帐户,则不会显示其帖子,并且一旦用户确认,其帖子将自动显示。我无法指定gem,这是离题的 通常,您会生成一个唯一且不可

Rails中的伙计们,我如何实现确认电子邮件,使得非用户只能在确认电子邮件后才能发布。因此,任何没有帐户的普通人都可以查看站点、提交帖子、验证电子邮件,然后帖子就可以激活。我已经安装了Desive,但它似乎更适合验证用户。实现上述功能的方法是什么?是否有特定的gem可供使用?

我认为您需要以不同的方式思考
在您的帖子列表/显示操作中,您可以为活动用户显示帖子,因此,如果用户未确认其帐户,则不会显示其帖子,并且一旦用户确认,其帖子将自动显示。

我无法指定gem,这是离题的

通常,您会生成一个唯一且不可用的长随机令牌,将其与最终确定的实体一起存储,在应用程序中有一条可以接受令牌的路由,并在相关实体中设置一个标志(在您的案例中为post)。然后构造调用该路由的确认链接(包括刚才生成的令牌数据)以放入电子邮件

您可以在posts表中添加两个字段,这些字段在网页中保持隐藏状态:

电子邮件\u确认\u令牌索引唯一字符串 电子邮件\u确认bool 并且只显示设置了电子邮件的帖子

Ruby标准库SecureRandom类是令牌数据的良好来源


如果要验证多个类型的实体,可能需要将其考虑在内。这个概念有时被称为nonce

我想designe的可确认模块也可以用于此。设计不仅仅是为了验证。就像:database\u authenticable for authentication一样,:confirmable用于验证帐户是否已确认


有关使用confirmable的更多详细信息,请参见此处

我的答案取决于您是否具有身份验证,因此我将其删除。你会有一个问题:一旦一封电子邮件被确认,你如何通过使用他们的电子邮件地址声称我是他们来阻止我以其他人的身份发布?在这里避免使用单词validated,这意味着地址符合标准格式,而不是有人在地址的另一端。:我很高兴你们能够明确地理解,在这种情况下,用户没有经过身份验证。尼尔:我的目标是,一旦电子邮件被确认,其他用户将无法申请该电子邮件,因为他们将不得不点击他们不会收到的确认电子邮件,因为他们不拥有该电子邮件。是的,您可以尝试使用已声明的电子邮件发布帖子,但系统将永远不会发布,因为您永远不会确认。OP似乎没有这样的帐户,只有与帖子关联的电子邮件地址。哦,我以为他正在使用此选项,需要将其与帖子激活链接