¿Cómo puedo restringir páginas jsp?

Soy nuevo en programación JSP y me gustaría saber como puedo restringir páginas jsp.. Es decir que nadie pueda entrar a ella directamente con la URL solo cuando se cumpla alguna condición entonces mandar a esa página.. Te agradeceré que me ayudes por favor.. Y otra cosa me interesaría aprender a crear y mantener sesiones... ¿dónde puedo encontrar información donde pueda yo enetender sobre ese tema? ¿Alguna página o algún libro que me recomiendes? No se nada al respecto

1 Respuesta

Respuesta
1
La seguridad se puede obtener de diferentes formas. Una de ella es usando el servidor o contenedor de servlet tomcat. Si creamos un usuario con un rol especifico en "tomcat-users", podemos modificar el web.xml con algo así:
<login-config>
<auth-method>BASIC
</auth-method>
<realm-name>Autentificacion Basica
</realm-name>
</login-config>
<security-role>
<description>usuario administrador</description>
<role-name>manager</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>nombre</web-resource-name>
<url-pattern>/seguro.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
Con esto estamos restringiendo el acceso a la página seguro.jsp a aquellos usuarios que no sean de rol "manager".
Existen otras maneras, que en lugar de mostrar el cuadro de formulario haya que reguistrarse usando un formulario.
Por supuesto también puedes realizar la seguridad programndo, de forma que dependas del servidor para autentificarse.
Esta otra manera requiere más esfuerzo del programador, pero te da más independencia del servidor.
Para ello debes, efectivamente, tener control de la sesión.
La sesión se obtiene a través de HTTPServletRequest. GetSession () y por simplificar piensa que se trata igual que la request, puedes dejar y recoger parámetros (objetos). Pero piensa que estos objetos se guardan en el servidor, por lo que procura solo guardar datos mínimos, como el usuario y sus datos personales, para no saturarlo.
Y sobre todo, tira de google. Javahispano y programación.com son dos sitios con bastante información sobre java.
Gracias por la respuesta.. ahora tengo unas dudas relacionado con lo mismo.. ¿cuándo dices modificar el web.xml te refieres al que esta en donde? en : LWS... root... WEB-INF--¿web.xml?
o en SUN..... ??
Ademas ya busque el tomcat-users y no lo encuentro
... Espero tu respuesta de antemano muchas gracias.
Tu aplicación debe de tener una estructura de directorios tal que así:
[carpeta]
|--->WEB-INF
. |
. +-->classes
+-->lib
No se si me explico, en cualquier caso dentro de la carpeta WEB-INF es donde esta el fichero web.xml y ahí es donde debes de especificar el tema de la seguridad que te comentaba antes.
Tomcat posee un fichero web.xml en su carpeta:
{tomcat_home}/conf
Que se usa para aquellos casos en los que la aplicación no posea un fichero web.xml válido dentro de WEB-INF. Este no debes de modificarlo.
NOTA: {tomcat_home} me refiero a la carpeta donde tengas instalado tomcat, que puede ser C:\tomcat , C:\servidores\tomcat5.0 , F:\archiv~1\apache\jakarta\tomcat ... o lo que sea
Dentro de esta misma carpeta {tomcat_home}/conf debe de haber un fichero (o suele haberlo) que se llama tomcat-users.xml, dentro estará algo como :
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="root" password="root" roles="manager"/>
</tomcat-users>
(Si no existe puedes crearlo tu mismo) que define usuarios y roles de usuarios que el servidor entiende.
Si no usas tomcat es posible que esto ultimo no sea así exactamente, pero debe de tener un sistema similar.
Bueno te agradezco las respuestas.. te aseguro que me han sido de gran utilidad y ahora comprendo más sobre este tema.. ¿nuevamente gracias?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas