我已经托管了一个rails应用程序,一个在线考试系统。用户需要注册才能访问系统。因此,每个用户都将获得一个独特的凭证组合。我们假设user-name/password
为demo/demo123
。我希望我的应用程序阻止另一个人登录系统,即使他知道我的凭据。这种情况的任何解决方案。
感谢您的帮助:) -
答案 0 :(得分:2)
使用Cookie将是一个更好的解决方案。当用户注册时,以加密格式(出于安全原因)创建特定于用户和系统的Cookie值,并将其保存在与该用户对应的数据库中。登录时检查此Cookie令牌。当用户清除cookie时,s(他)可以请求管理员清除DB cookie以创建新cookie。
使用IP不是更好的解决方案,因为在网络中,可以将动态IP分配给PC。
答案 1 :(得分:1)
您可以在首次登录时在数据库中记录用户的IP地址,并且只允许使用相同的凭据登录,但是在等待一段时间之后从新 IP地址登录小时,或直到目前的检查完成。这应该可以防止多个用户在短时间内登录到同一个用户帐户。
可以使用request.remote_ip
在Rails控制器中访问用户的IP地址。
答案 2 :(得分:1)
您可以使用lock gem为整个应用程序添加密码。
首先,添加到您的Gemfile。
gem 'lock'
然后
bundle install
接下来,创建密码
rails g lock:create_password_file yourpasswordhere
最后,添加锁定您的应用程序控制器或任何您想要的内容(请参阅documentation)。
ApplicationController < ActionController::Base
lock
end