2

我托管了一个 Rails 应用程序,一个在线考试系统。用户需要注册才能访问系统。因此,将为每个用户提供唯一的凭据组合。让我们假设我user-name/password的是demo/demo123。我希望我的应用程序阻止其他人登录系统,即使他知道我的凭据。这种情况的任何解决方案。

谢谢你的帮助 :)-

4

3 回答 3

2

使用 Cookie 将是一个更好的解决方案。当用户注册时,创建一个特定于用户和系统的 Cookie 值,并以加密格式(出于安全原因)并将其保存在与该用户对应的数据库中。登录时检查此 Cookie 令牌。当用户清除 cookie 时,他(他)可以请求管理员清除 DB cookie 以创建新的。

使用 IP 不会是更好的解决方案,因为在网络中,可以为 PC 分配动态 IP。

于 2013-04-03T06:06:37.607 回答
1

您可以在用户首次登录时将其 IP 地址记录在数据库中,并且仅允许在等待一段时间(例如 1 小时)或直到当前检查完成后使用相同的凭据但从新的 IP 地址登录。这应该可以防止多个用户在短时间内登录到同一个用户帐户。

用户的 IP 地址可以在 Rails 控制器中使用request.remote_ip.

于 2013-04-02T05:54:44.660 回答
1

您可以使用lock gem 为整个应用程序添加密码。

首先,添加到您的 Gemfile。

gem 'lock'

然后

bundle install

接下来,创建您的密码

rails g lock:create_password_file yourpasswordhere

最后,添加锁定您的应用程序控制器,或任何您想要的(参见文档)。

ApplicationController < ActionController::Base
  lock
end
于 2013-04-02T12:32:14.000 回答