Forum: Rails-ES Control de sesiones

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jose Antonio P. (Guest)
on 2009-01-14 18:39
 Hola lista,

 Estoy intentando crear para mi aplicación una medida de seguridad
referente a la expiracion de las sesiones. Lo que quiero es que una
sesion finalice si ha estado 15 minutos sin refrescarse o lleva 12 horas
ya creada. Por ahora tengo lo siguiente:

 class Session < ActiveRecord::Base
   def self.sweep(time_ago = nil)
     time = case time_ago
       when /^(\d+)m$/ then Time.now - $1.to_i.minute
       when /^(\d+)h$/ then Time.now - $1.to_i.hour
       when /^(\d+)d$/ then Time.now - $1.to_i.day
       else Time.now - 1.hour
     end
     self.delete_all "updated_at < '#{time.to_s(:db)}' OR
               created_at < '#{12.hour.ago.to_s(:db)}'"
   end
 end

 Y en application.rb:

 before_filter :authorize, :except => [:login, :activate]

 def authorize
   Session.sweep("15m")

   unless User.find_by_id(session[:user_id])
     reset_session
     session[:original_uri] = request.request_uri

     if(User.count == 0)

  flash[:notice] = "Por favor, introduzca el primer usuario en el
sistema"

     else

  flash[:notice] = "Por favor, identifiquese"

     end

     redirect_to(:controller => :users, :action => :login)

   end

 end

 La cuestión es que navego por la aplicación, la dejo durante más de 15
minutos, realizo una acción y me permite realizarla, pero la que va
inmediatamente posterior no. ¿Cómo es que no me corta en la primera
acción pasado los 15 minutos? Se supone que Session.sweep("15m") ha
borrado la session de la base de datos.
Christian R. (Guest)
on 2009-01-14 22:03
Jose Antonio P. wrote:

>  La cuestión es que navego por la aplicación, la dejo durante más de 15
> minutos, realizo una acción y me permite realizarla, pero la que va
> inmediatamente posterior no. ¿Cómo es que no me corta en la primera
> acción pasado los 15 minutos? Se supone que Session.sweep("15m") ha
> borrado la session de la base de datos.

solo se me ocurre una cochinada, cuando pasen los 15min redireccionate a
otra pagina, esa seria la accion que te permite realizar, por lo tanto
cuando intentes realizar una segunda accion tampoco te dejara.
Xavier N. (Guest)
on 2009-01-14 23:09
(Received via mailing list)
2009/1/14 Jose Antonio P. <removed_email_address@domain.invalid>:

>  La cuestión es que navego por la aplicación, la dejo durante más de 15
> minutos, realizo una acción y me permite realizarla, pero la que va
> inmediatamente posterior no. ¿Cómo es que no me corta en la primera
> acción pasado los 15 minutos?

Sospecho que es porque el objeto sesion esta ya creado antes de que se
ejecuten esos filtros, y la app trabaja con el al margen de lo que se
haya borrado en base de datos.

Apuesto de todas maneras a que existen plugins que resuelven esto.
Jose Antonio P. (Guest)
on 2009-01-15 10:37
¿Habría alguna forma de forzar a rails a cargar de nuevo los valores de
session? Es decir:

 def authorize
   Session.sweep("15m")
   #cargar nuevos valores de session por si ha sido borrada la sesion
   unless User.find_by_id(session[:user_id])
     reset_session
     session[:original_uri] = request.request_uri

     if(User.count == 0)
       flash[:notice] = "Por favor, introduzca el primer usuario en el
sistema"
     else
       flash[:notice] = "Por favor, identifiquese"
     end

     redirect_to(:controller => :users, :action => :login)

   end
 end



Xavier N. wrote:

> Sospecho que es porque el objeto sesion esta ya creado antes de que se
> ejecuten esos filtros, y la app trabaja con el al margen de lo que se
> haya borrado en base de datos.
Xavier N. (Guest)
on 2009-01-15 11:57
(Received via mailing list)
2009/1/15 Jose Antonio P. <removed_email_address@domain.invalid>:

> ¿Habría alguna forma de forzar a rails a cargar de nuevo los valores de
> session?

Por que no te miras un plugin?
Jose Antonio P. (Guest)
on 2009-01-15 12:14
Ya me he decidido por un plugin. Limited Sessions. Pero el seguir con lo
de antes era mas bien por cabezonería y por profundizar un poco mas en
las sesiones. A ver que tal va el plugin este.

Xavier N. wrote:
> 2009/1/15 Jose Antonio P. <removed_email_address@domain.invalid>:
>
>> ¿Habría alguna forma de forzar a rails a cargar de nuevo los valores de
>> session?
>
> Por que no te miras un plugin?
This topic is locked and can not be replied to.