Definire il limite di una sessione per utente alla volta

La mia app utilizza Rails 3.0.4 e Devise 1.1.7.

Sto cercando un modo per impedire agli utenti di condividere account poiché l’app è un servizio basato su abbonamento. Ho cercato per oltre una settimana, e ancora non so come implementare una soluzione. Spero che qualcuno abbia implementato una soluzione e possa indicarmi la giusta direzione.

Soluzione (grazie a tutti per le vostre risposte e intuizioni!)

Nell’applicazione controller.rb

before_filter :check_concurrent_session def check_concurrent_session if is_already_logged_in? sign_out_and_redirect(current_user) end end def is_already_logged_in? current_user && !(session[:token] == current_user.login_token) end 

In session_controller che sovrascrive il controller Devise Sessions:

 skip_before_filter :check_concurrent_session def create super set_login_token end private def set_login_token token = Devise.friendly_token session[:token] = token current_user.login_token = token current_user.save end 

Nella migrazione AddLoginTokenToUsers

 def self.up change_table "users" do |t| t.string "login_token" end end def self.down change_table "users" do |t| t.remove "login_token" end end