Ver imagen en aplicacion web

_kRuStY_

Estoy haciendo una aplicacion web en la universidad a la que se permite subir imagenes. Pero luego esas imagenes solo se deben poder ver cuando un usuario este aunteticado en el sistema pero no se como hacerlo. Cuando el usuario introduzca la URL de la imagen, tan solo deberia verla un usuario que previamente se haya autenticado.

Alguno sabe como hacerlo? Porque claro no va asociado a ningun servlet ni nada donde pueda comprobar la validez del usuario.

Muchas gracias.

LOc0

En una palabra: cookies.

Pregunta a tito Google.

Salu2 ;)

_kRuStY_

pfff cookies, tambien las conozco del proyecto xD. Pero, ¿como utilizo una cookie para eso? Me refiero, no se donde introducir codigo si la URL lleva directamente a la imagen, ¿en que momento puedo meterle mano por ahi para hacer la comprobacion?

Gracias.

erdanblo

if($cookie[logueado] == "si") {
<img src="/ruta/a/la/imagen.jpg">
}else{
echo 'MORZAAAAAA TENGO TERRASSS, LOGUEATE Y NOS CASAMOS';
}

_kRuStY_

Si el problema no es el codigo (que tambien lo es)...Pero es una URL, donde meto ese codigo que no permita la entrada.

Si pones http://192.168.100.1/serv1/perro.jpg, sale automaticamente la imagen, no pasa por ningun servlet de control ni nada parecido.

erdanblo

Pues solo se me ocurre que guardes la imagen en la base de datos.

LOc0

Mete las imágenes en un directorio PRIVADO que sólo tenga acceso el script de la página o #6

Salu2 ;)

WaYnE10

Hola, la verdad es que no se como podrias hacerlo #1, respecto #6 meterlo en la BBDD sería un poco lio no? a parte consumiria mucho en la base de datos....

No se muy bien si se podría hacer con algo de JavaScript... igual ponerle una propiedad a la imagen o algo asi... igual otro sabe como...

_kRuStY_

Podrias explicar mas eso del directorio privado? xD no me dejes a medias jajaja

LOc0

Pues es muy sencillo. No sé si usas APACHE, pero la idea es tener un directorio privado (que no tenga permisos de lectura públicos) donde guardes las fotos. Después para acceder usa:

http://192.168.100.1/serv1/imagen.php?id=perro.jpg (Suponiendo que usaras PHP).

El script entonces comprueba con las cookies que el usuario está autenticado, lee el fichero de la imagen y se lo manda al navegador. (Las funciones a usar dependen de si usas PHP, JSP, ASP, etc... pero la idea es la misma)

Salu2 ;)

WaYnE10

yo estaba haciendo algo parecido, pero es que uso glassfish y el lenguaje de programación java con JSP sabrías cómo sería ?? o ni idea..

De todas maneras según ponia intentaba acceder con http://192.168.100.1/serv1/perro.jpg y según pusiste la URL http://192.168.100.1/serv1/imagen.php?id=perro.jpg estarias intentando acceder a un php y la imagen sería como parametro...

bLaKnI

Exacto. Es que no queda mas remedio que hacer lo que dice Loco.
Las imagenes deben ser totalmente inaccesibles.
Así que si alguien accede via URL, deberá petar.

Por lo tanto, solo os queda controlar el acceso via función.

A pesar de todo, mediante servlets, con un buen control de Header, se podria parsear la URL (.*(jpg|png|bmp|gif|tga|..........)) de la request y usar sendError en caso de que por ejemplo, la cookie falle.

elkaoD

También se puede hacer como dice LOc0 pero aparte de tener las imágenes en un directorio privado, hacer un pequeño script de este tipo:

if (existe_la_cookie_y_tal)
{
  header("Content-Type: image/jpeg");
  readfile("path/to/myimage.jpg");
} else {
  header("HTTP/1.1 403 Forbidden");
}

Así, en lugar de linkear la imagen directamente, lo que linkeas es el script, y el usuario final no ve nada. Incluso puedes hacer que en lugar de un error 403 te redirija a otra imagen en plan "No tienes permiso", usando readfile igual que en el primer caso, o con un simple header("Location: http://path/imagen_error.jpg");

_kRuStY_

Ok weno gracias a todos, esta tarde tngo clase asi que a ver que me dicen el profesor y si consigo algo lo pondre aqui.

^^

Usuarios habituales

  • _kRuStY_
  • elkaoD
  • bLaKnI
  • WaYnE10
  • LOc0
  • erdanblo