Authlogic: гарантия того, что пользователь не сможет войти дважды

Есть ли простой способ в Authlogic (не находя ничего, просматривая документы), чтобы гарантировать, что UserSession не может быть создан, если у пользователя уже есть объект UserSession?

Другими словами: я хочу убедиться, что пользователь не может войти в систему дважды с одинаковыми учетными данными.

ОБНОВЛЕНИЕ: Проверьте комментарии на ответ вора, чтобы найти решение этой проблемы.

2 ответа

Решение

В вашем контроллере пользовательских сессий:

    before_filter :require_no_user, :only => [:new, :create]

в вашем контроллере приложения:

def require_no_user
  if current_user
    store_location
    flash[:notice] = "You must be logged out to access this page"
    redirect_to account_url
    return false
  end
end

На мой взгляд, более чистый подход заключается в использовании обратных вызовов в классе UserSession. Например, вы можете определить обратный вызов before_create и пометить модель как недействительную в соответствующем случае. Хотя сам не пробовал. Вот документы для модуля Callbacks.

Другие вопросы по тегам