Una duda para un verdadero conocedor

alfguzman
23 de Diciembre del 2004
Tengo una aplicación con algunos servlets y algunos archivos html. Uno de los servlets se encarga de validar al usuario con un login y password, esto lo hago con "getsession(true) y en los otros servlet con getsession(false) y me funciona, pero lo que no se hacer es que si quiero que cuando alguien intente acceder a uno de los archivos html que hay en la aplicacion no se los permita si no pasaron por el proceso de validacion, alguien me puede decir si sabe alguna forma??, se que con jsp si se puede, pero me pidieron que lo hiciera sin jsp, y que las paginas de html que tengo sean solo eso html, es decir que esas no sean generadas por un servlet.

Gracias y por favor espero que me ayuden


Saludos Alfredo

Sergio Ceron /> psychostrau
23 de Diciembre del 2004
Hola Alfredo creo que tu problema es que usas servlets en tu seguridad, mejor utiliza la seguridad del contenedor. Para Tomcat tienes que modificar el web.xml del contexto asi


-------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<security-constraint>
<web-resource-collection>
<!-- aqui la carpeta a proteger-->
<web-resource-name>/carpeta</web-resource-name>
<!--el tipo de archivos a proteger aqui yo pongo * el asterisco por que quiero proteger cualquier tipo-->
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!--este es el tipo de usuario que tendra acceso a la carpeta y a los recursos de ella-->
<role-name>usuario</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>


<login-config>
<!--el tipo de autentificacion, podemos poner BASIC que es como si te intentaras conectar a un ftp pero login es mejor-->
<auth-method>FORM</auth-method>
<realm-name>
Ejemplo de autentificacion por medio de formulario
</realm-name>
<form-login-config>
<!--esto es la pagina que aparecera para autentificarce y la pagina en caso de que se equivoque-->
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
<security-role>
<!--volvemos a deifinir el grupo de usuarios-->
<role-name>usuario</role-name>
</security-role>

<display-name>Bienvenido al sistema de seguiridad de underserver</display-name>
<description>
Welcome to Tomcat
</description>

<welcome-file-list>
<welcome-file>
<!-- aqui el archivo de bienvenida ejemplo-->
index.html
</welcome-file>
</welcome-file-list>
</web-app>
------------------------------------------------------------------
ahora esto va en la pagina de autentificacion, osea, en el login.html
------------------------------------------------------------------
<form action=j_security_check method=post>
Nombre de Usuario : <input type=text name=j_username><br>
Password : <input type=password name=j_password><br>
<input type=submit>
</form>
----------------------------------------------------------------
En la pagina de error puedes poner lo que sea


NOTA:
Los usuarios los defines en el archivo tomcat-users.xml de la carpeta config. Ej.

---------------------------------------------------------------------


<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="usuario
<user username="alfredo" password="tomcat" roles="usuario"/>
</tomcat-users>
--------------------------------------------------------------------
reinicias el servidor y listo

Paneb
23 de Diciembre del 2004
Si la validación la quieres hacer "a pelo" (sin usar el contenedor) deberás chequear al principio de cada página y en la invocación de cada servlet si existe en la sesión algún tipo de valor que hayas introducido en el proceso de Login.

Esto se traduce finalmente a que tu aplicación no puede (no debería) tener páginas html, todas deberían ser JSP con la citada validación.