[Pregunta filosófica] ¿Cuando es bueno usar sesiones?

Iniciado por WHK, 13 Diciembre 2013, 19:09 PM

0 Miembros y 1 Visitante están viendo este tema.

WHK

estuve dandole una vuelta al tema de cuando usar sesiones y me di cuenta que para ningún caso es bueno :-/

Tanto en .NET como en PHP usar sesiones es como usar soluciones parches ya que en todos los casos es reemplazable por una manera opcional, por ejemplo en ves de llevar sesiones usar cookies y una librería de configuraciones, en .net aspx en ves de usar sesiones llevar la sesión local desde una librería de configuraciones nativa.

Transportar datos de una página a otra tampoco debería ser una buena alternativa ya que para eso existe la programación con archivos relacionados... o sea uno llama a todos y por ende todos los objetos se comparten entre archivos como sucede en una programación MVC.

Entonces... cuando es bueno utilizar sesiones teniendo en cuenta que no todos los servidores lo soportan por un tema de permisos en archivos temporales?

Siempre he evitado usar sesiones y jamas he tenido la necesidad de usarlas.., pero cuando si debo utilizarlas?

#!drvy

Me imagino que estamos hablando de $_SESSION no ?

Hay que decir que $_SESSION (como ya sabras) es totalmente diferente a una cookie. Mientras que la cookie almacena su valor en el PC del visitante, el session lo almacena en el servidor.

Por supuesto siempre puedes implementar tu propia "session" y almacenar el valor en otro sitio que no sea un archivo temporal (una bd por ejemplo)... pero para que reinventar la rueda si funciona ?

La idea de las funciones es que sean reemplazables.. todo lenguaje que se respete a si mismo debería proporcionarte al menos 2 maneras de hacer lo mismo.. pero volvemos al mismo punto.. para que reinventar la rueda si funciona ?

Yo considero las sessiones mucho mas seguras que las cookies.. y al mismo tiempo me ahorro tiempo en implementar mis propias "sessiones". Y las utilizo siempre que el servidor me lo permita.

Saludos

WHK

Asi es, a ese tipo de sesiones me refiero.

El tema es el siguiente... digamos que inicio sesión y almaceno mi id de usuario y un token en la cookie, con esos datos puedo loguearme comparando el hash de mi contraseña mas el token de seguridad == hash de la cookie, mas el id de usuario.

Ahora.. teniendo eso para que voy an necesitar la sesion? Digamos un caso muy común... yo me logueo al sistema y todos mis permisos de usuario y preferencias del sistema se guardan en la sesión... ahora digamos que yo como administrador le quiero modificar un valor a los permisos de ese usuario y una propiedad al portal... esas modificaciones se hacen en la base de datos pero en la sesión van a persistir los datos antiguos porque solo fueron establecidos cuando se logueó, por lo tanto tendré que ir esperando a que todos los usuarios pierdan su sesión para que de a uno por uno vayan viendo los cambios de mi portal.

Ahora... que sucede cuando esa configuración es importante y urgente? talves al momento de programarlo no se veia que fuera a usarse de forma urgente pero no sería un mal diseño de software almacenar datos en la sesión?

Ahora... cuando encuentro que sea buena idea almacenar datos en la sesión?... solo cuando necesite almacenar querys a modo de caché para no tener que hacerla dos veces en cada carga de la página... pero tal como lo escribí "a modo de caché", esto quiere decir que no reflejarán los datos reales de la base de datos en tiempo real.

Por lo tanto utilizar sesiones se me hace redundante, peligroso y obsoleto pero solo a mi parecer y de ahi vino mi pregunta filosófica... si php y .net tienen sesiones en sus lenguajes es porque en algún momento se pueden utilizar de manera correcta, el tipo que hizo php es un genio en todo sentido y si le puso sesiones es por algo... ahora, porque? no lo se y eso me gustaría saber.