# $Id: Session.pm,v 1.4 2007-05-29 17:16:31 mike Exp $ package Keystone::Resolver::DB::Session; use strict; use warnings; use Keystone::Resolver::DB::Object; use vars qw(@ISA); @ISA = qw(Keystone::Resolver::DB::Object); sub table { "session" } sub fields { (id => undef, site_id => undef, cookie => undef, user_id => undef, dest => undef, query => undef, ) } # Generate a suitable opaque session key to use included as the # session-cookie's value. We could include information in this key, # such as an encrypted version of the IP address that the session was # created for -- then we'd be able to reject cookies submitted from # the wrong machine. But for now, we just generate randomly. # sub create { my $class = shift(); my $chars = join("", "A".."Z", "a".."z", "0".."9", "+", "/"); my $cookie = ""; foreach my $i (1..12) { $cookie .= substr($chars, int(rand()*64), 1); } return $class->SUPER::create(@_, cookie => $cookie); } 1;