2012-03-02 32 views
5

Estoy aprendiendo servlets de Java en el entorno de Tomcat. Estoy aprendiendo a usar la autenticación de inicio de sesión basada en formularios usando j_security_check. Entonces, en mi servlet, tengo una página de inicio de sesión que tiene j_username y j_password. En el archivo web.xml de ese servlet, tengo la lista de la página de bienvenida que indica mi página de destino, "landing.html". Entonces, idealmente, después de iniciar sesión correctamente, quiero que el usuario sea redirigido a la página "landing.html".j_security_check redirect

Sin la autenticación (sin autenticación basada en el formulario), Mi servlet se abre y va a la página "landing.html" como se esperaba ("localhost: 8080/MyServlet" - muestra el contenido de landing.html).

Sin embargo, ahora, después de un inicio de sesión exitoso con j_security_check, por alguna razón, me redireccionan automáticamente al archivo .css para el archivo "landing.html". No puedo entender por qué está sucediendo esto.

¿Hay alguna manera particular de cómo puedo decirle al servidor que solo cargue la página "landing.html" después de la autenticación exitosa y no la reenvíe a ningún otro lugar?

EDITAR

* Está bien, lo resolví. El archivo css que se estaba cargando después de una autenticación exitosa se incluyó en las etiquetas <head></head> de la página login.html donde están j_username y j_password. Agregué ese archivo CSS para hacer que el diseño de la página de inicio de sesión consista en el resto del sitio web. Supongo que cuando el servidor está recargando el recurso deseado, por alguna razón, simplemente recargó el archivo css superior de la etiqueta principal. realmente extraño. Por lo tanto, es j_security_check es la mejor manera de hacer ningún tipo de autenticación para los sitios web en Tomcat o hay una manera mejor y más fiable *

Respuesta

10

El comportamiento de la autenticación basada en formularios es la siguiente:?

  • la navegador envía una petición a una URL protegida
  • el servidor intercepta la solicitud, ve que usted no está autenticado, y redirige a la página de forma loginf
  • el usuario inicia sesión en
  • el servidor redirige a la URL que provocó t Autenticación: la URL protegida solicitada en el primer paso.

Esto es bueno, ya que permite a un usuario marcar una página protegida, volver al día siguiente a esta página marcada, iniciar sesión e ir directamente a la página marcada en lugar de a la página de bienvenida.

Supongo que la página de inicio es no protegida, pero su archivo CSS sí lo está. De modo que la solicitud que activa la autenticación es la solicitud que intenta cargar el archivo CSS, lo que provoca que el usuario sea redirigido al archivo CSS.