ruby-on-rails - 在没有身份验证的情况下将我的网站限制为每位用户一个 - 比较数组中的日期
问题描述
如何在没有身份验证的情况下仅由一个用户限制页面,并且在第一个用户和第二个用户之间延迟 3 分钟。如果有人有线索或解决方案?
这是我尝试做的事情:一个独特的用户登陆我的页面并填写表格,因为我想通过创建一个 User.last 来选择他,我需要他在我的页面上是唯一的(不打扰注册并成为确保我使用 User.last 选择了正确的用户)并等待 3 分钟让第二个用户访问此页面。就像我有 10 个人试图访问我的网站,其中 1 个人在填写表格,其他 9 个人正在排队等待访问我的页面。Actualluy 尝试在 Ruby on Rails 中执行此操作。
我对该字段的视图如下所示(需要在此页面上只允许一个用户):
<div class="container">
<center><h1>New Connection </h1></center>
<%= form_with model: @email, local: true do |form|%>
<% if @email.errors.any? %>
<div id="error explanation" class="alert alert-danger">
<p>Erreur(s) : </p>
<ul>
<% @email.errors.full_messages.each do |message|%>
<li><%=message%></li>
<% end %>
</ul>
</div>
<% end %>
<div class="form-group">
<%= label_tag :email %> :
<%= form.email_field :email, placeholder: "Email", class: "form-control" %>
</div>
<div class="form-group">
<%= form.submit class: "btn btn-primary btn-lg btn-block", value: "Se connecter" %>
</div>
<%end%>
</div>
我的电子邮件控制器:
class EmailsController < ApplicationController
def index
redirect_to root_path
end
def new
@email = Email.new
sessions = ActiveRecord::SessionStore::Session.pluck(:updated_at)
#return an array like this :
[Tue, 21 Jan 2020 13:27:03 UTC +00:00, Tue, 21 Jan 2020 13:27:09 UTC +00:00, Tue, 21 Jan 2020 13:27:42 UTC +00:00, Tue, 21 Jan 2020 13:31:33 UTC +00:00, Tue, 21 Jan 2020 13:36:21 UTC +00:00, Tue, 21 Jan 2020 13:42:02 UTC +00:00, Tue, 21 Jan 2020 13:42:02 UTC +00:00, Tue, 21 Jan 2020 13:42:03 UTC +00:00, Tue, 21 Jan 2020 13:42:03 UTC +00:00, Tue, 21 Jan 2020 13:42:04 UTC +00:00, Tue, 21 Jan 2020 13:42:04 UTC +00:00, Tue, 21 Jan 2020 13:44:47 UTC +00:00, Tue, 21 Jan 2020 13:44:47 UTC +00:00, Tue, 21 Jan 2020 13:46:24 UTC +00:00, Tue, 21 Jan 2020 13:49:10 UTC +00:00, Tue, 21 Jan 2020 13:49:38 UTC +00:00, Tue, 21 Jan 2020 13:50:54 UTC +00:00, Tue, 21 Jan 2020 13:50:54 UTC +00:00, Tue, 21 Jan 2020 14:03:42 UTC +00:00, Tue, 21 Jan 2020 14:07:11 UTC +00:00, Tue, 21 Jan 2020 14:07:11 UTC +00:00, Tue, 21 Jan 2020 14:07:12 UTC +00:00, Tue, 21 Jan 2020 14:07:12 UTC +00:00, Tue, 21 Jan 2020 14:36:39 UTC +00:00, Tue, 21 Jan 2020 14:36:48 UTC +00:00, Tue, 21 Jan 2020 14:36:57 UTC +00:00, Tue, 21 Jan 2020 14:42:02 UTC +00:00, Tue, 21 Jan 2020 14:42:03 UTC +00:00, Tue, 21 Jan 2020 14:44:16 UTC +00:00, Tue, 21 Jan 2020 14:52:46 UTC +00:00, Tue, 21 Jan 2020 14:52:47 UTC +00:00, Tue, 21 Jan 2020 14:52:47 UTC +00:00, Tue, 21 Jan 2020 14:54:48 UTC +00:00, Wed, 22 Jan 2020 08:09:47 UTC +00:00, Wed, 22 Jan 2020 08:09:48 UTC +00:00, Wed, 22 Jan 2020 08:12:06 UTC +00:00, Wed, 22 Jan 2020 08:12:07 UTC +00:00, Wed, 22 Jan 2020 08:12:16 UTC +00:00, Wed, 22 Jan 2020 08:12:17 UTC +00:00, Wed, 22 Jan 2020 08:12:17 UTC +00:00, Wed, 22 Jan 2020 08:12:29 UTC +00:00, Wed, 22 Jan 2020 08:12:39 UTC +00:00, Wed, 22 Jan 2020 08:12:40 UTC +00:00, Wed, 22 Jan 2020 08:13:07 UTC +00:00, Wed, 22 Jan 2020 08:13:07 UTC +00:00, Wed, 22 Jan 2020 08:13:08 UTC +00:00, Wed, 22 Jan 2020 08:15:34 UTC +00:00, Wed, 22 Jan 2020 08:22:38 UTC +00:00, Wed, 22 Jan 2020 08:25:28 UTC +00:00, Wed, 22 Jan 2020 08:25:29 UTC +00:00, Wed, 22 Jan 2020 08:25:29 UTC +00:00, Wed, 22 Jan 2020 08:29:24 UTC +00:00, Wed, 22 Jan 2020 08:36:15 UTC +00:00, Wed, 22 Jan 2020 08:36:16 UTC +00:00, Wed, 22 Jan 2020 08:36:16 UTC +00:00, Wed, 22 Jan 2020 08:36:17 UTC +00:00, Wed, 22 Jan 2020 08:36:17 UTC +00:00, Wed, 22 Jan 2020 08:36:18 UTC +00:00, Wed, 22 Jan 2020 08:36:18 UTC +00:00, Wed, 22 Jan 2020 08:36:30 UTC +00:00, Wed, 22 Jan 2020 08:40:30 UTC +00:00, Wed, 22 Jan 2020 08:40:30 UTC +00:00, Wed, 22 Jan 2020 08:41:14 UTC +00:00, Wed, 22 Jan 2020 08:50:25 UTC +00:00, Wed, 22 Jan 2020 08:50:26 UTC +00:00, Wed, 22 Jan 2020 08:50:27 UTC +00:00, Wed, 22 Jan 2020 08:50:37 UTC +00:00, Wed, 22 Jan 2020 08:50:37 UTC +00:00, Wed, 22 Jan 2020 08:50:38 UTC +00:00, Wed, 22 Jan 2020 08:50:48 UTC +00:00, Wed, 22 Jan 2020 08:50:48 UTC +00:00, Wed, 22 Jan 2020 08:50:49 UTC +00:00, Wed, 22 Jan 2020 08:57:58 UTC +00:00, Wed, 22 Jan 2020 08:57:59 UTC +00:00, Wed, 22 Jan 2020 09:04:29 UTC +00:00, Wed, 22 Jan 2020 09:04:29 UTC +00:00, Wed, 22 Jan 2020 09:04:30 UTC +00:00, Wed, 22 Jan 2020 09:04:39 UTC +00:00, Wed, 22 Jan 2020 09:04:39 UTC +00:00, Wed, 22 Jan 2020 09:04:40 UTC +00:00, Wed, 22 Jan 2020 09:04:49 UTC +00:00, Wed, 22 Jan 2020 09:04:49 UTC +00:00, Wed, 22 Jan 2020 09:04:50 UTC +00:00, Wed, 22 Jan 2020 09:13:21 UTC +00:00, Wed, 22 Jan 2020 09:17:48 UTC +00:00, Wed, 22 Jan 2020 09:20:03 UTC +00:00, Wed, 22 Jan 2020 09:27:54 UTC +00:00, Wed, 22 Jan 2020 09:27:54 UTC +00:00, Wed, 22 Jan 2020 09:28:04 UTC +00:00, Wed, 22 Jan 2020 09:28:05 UTC +00:00, Wed, 22 Jan 2020 09:35:42 UTC +00:00, Wed, 22 Jan 2020 09:35:43 UTC +00:00, Wed, 22 Jan 2020 09:35:58 UTC +00:00]
#How can I say that if a session is in the same minute than the previous session, redirect the one last one to another url?
end
def create
@email = Email.create(email_params)
respond_to do |format|
if@email.persisted?
format.html {redirect_to invoice_index_path, notice: 'Email Validated '}
else
format.html{render :new}
end
end
end
private
def email_params
params.require(:email).permit(:email, :id_user)
end
end
编辑 :
正如评论部分所建议的,我尝试使用会话,我可以访问由 rails 进行的会话,request.session_options[:id]
但我如何计算它们?
编辑 2:
正如 ARK 在评论部分所建议的,我尝试使用 Rails 创建的 Session,我编辑了我的控制器部分。我怎么能说如果一个会话与前一个会话在同一分钟内,将最后一个重定向到另一个 url ?
解决方案
推荐阅读
- python - 即使在表单属性中要求:假,也需要 Django 表单复选框
- ssl - 如何正确计算证书的指纹
- safari - 设置 w(宽度)和裁剪查询时,Wordpress 图像在 Safari 上返回 403
- spring-boot - Spring Boot 和 configureMessageConverters
- javascript - 在 JavaScript 中检查真假
- apache - 执行 sudo chown apache:apache -R /data/www/html/sites/mysite 后找不到文件
- tensorflow - 使用 TFagents 的自定义环境
- javascript - 如何使用 webpack 创建可摇树的库
- python - Pygame 不会杀人
- cookies - 当只有主机名存在时,“samesite:strict”如何工作?