Заблокировать другому пользователю доступ к приложению Rails с моей аутентификацией

Я разместил приложение rails, систему онлайн-экзаменов. Пользователям необходимо зарегистрироваться, чтобы получить доступ к системе. Таким образом, каждому пользователю будет предоставлена ​​уникальная комбинация учетных данных. Предположим, что мой user-name/password равен demo/demo123. Я хочу, чтобы мое приложение блокировало вход другого человека в систему, даже если он знает мои учетные данные. Любое решение для такого сценария.

Спасибо за любую помощь :)-


person Rajesh Omanakuttan    schedule 02.04.2013    source источник


Ответы (3)


Использование Cookie было бы лучшим решением. Когда пользователь регистрируется, создайте значение Cookie, относящееся к Пользователю и Системе, в зашифрованном формате (из соображений безопасности) и сохраните его в базе данных, соответствующей этому пользователю. Проверяйте наличие этого токена cookie при входе в систему. Когда пользователь очищает cookie, он может попросить администратора очистить cookie БД для создания нового.

Использование IP не будет лучшим решением, поскольку в сети ПК могут быть назначены динамические IP-адреса.

person Rajesh Omanakuttan    schedule 03.04.2013
comment
Но тот факт, что IP-адреса будут назначаться динамически, не означает, что это небезопасно, так как уникальный IP-адрес будет назначен каждой машине через DHCP-сервер. И если вы пытаетесь предотвратить совместную работу одного человека с другим на экзамене, не могут ли они потенциально прочитать файл cookie своего браузера и отправить его кому-то другому? Это похоже на потенциальную дыру в безопасности, тогда как IP сложнее подделать. - person Stuart M; 03.04.2013

Вы можете записать IP-адрес пользователя в базу данных при первом входе в систему и разрешить вход с использованием тех же учетных данных, но с нового IP-адреса, только после некоторого периода ожидания, скажем, 1 час или до тех пор, пока текущее обследование не будет завершено. Это должно предотвратить вход более чем одного пользователя в одну и ту же учетную запись пользователя в течение короткого периода времени.

Доступ к IP-адресу пользователя можно получить в контроллере Rails с помощью request.remote_ip.

person Stuart M    schedule 02.04.2013
comment
Не вызовет ли это других трудностей при использовании динамического ip? однако вы можете проверить, вошел ли пользователь уже в систему, или добавить дополнительную фразу-пароль в поля входа. - person dennis; 02.04.2013

Вы можете использовать гем lock, чтобы добавить пароль ко всему приложению.

Сначала добавьте в свой Gemfile.

gem 'lock'

потом

bundle install

Далее создайте свой пароль

rails g lock:create_password_file yourpasswordhere

Наконец, добавьте блокировку контроллера приложения или что угодно (см. документацию).

ApplicationController < ActionController::Base
  lock
end
person John Pinkerton    schedule 02.04.2013
comment
Пожалуйста, поймите вопрос, а затем ответьте на него. - person Rajesh Omanakuttan; 02.04.2013
comment
Извините, я не понял @Rajesh. Он блокирует вход другого человека в систему, даже если он знает мои учетные данные. - person John Pinkerton; 03.04.2013
comment
Я не хочу блокировать свое приложение. Я хочу заблокировать вход другого человека с моими учетными данными. Таким образом, другие смогут войти в приложение, если у них есть собственные учетные данные. Надеюсь, вы уловили идею. - person Rajesh Omanakuttan; 03.04.2013