Pregunta

Tengo un problema con las funciones de autenticación de Servlet 3.0:

Con este código en un servlet v3:

log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
log.info("===^===");
request.logout() ;
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
request.authenticate(response) ;
log.info("===v===");
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());

Me siempre esperar ver las ventanas de nombre de usuario / login, debido a la función logout(). En cambio, parece ser un mecanismo de 'caché', que repoblar la credencial y cancelar mi cierre de sesión ...

Administrador

BASIC

=== === ^

nula

nula

=== === v

Administrador

BASIC

¿Es un problema con mi firefox, o algo que me falta en el código Servlet?

¿Fue útil?

Solución

Siempre se puede esperar para ver las ventanas de nombre de usuario / login, debido a la logout() función. En cambio, parece ser un mecanismo de 'caché', que repoblar la credencial y cancelar mi cierre de sesión ...

Esa es la manera autenticación básica de HTTP fue diseñado, permite autenticar todo el estado que se mantiene en el cliente. En otras palabras, su imposible para cerrar la sesión con autenticación básica / digerir, el servidor no puede detener a un cliente de almacenamiento en caché y volver a enviar un autenticador Basic Auth en las solicitudes subsiguientes al servidor.

Mi sugerencia es que la autenticación basada en formulario de uso y la login método de HTTPServletRequest .

Referencias

Otros consejos

No es ni. Una vez iniciada la sesión, el navegador pasará siempre su identificación de usuario y contraseña a la dirección URL. Hasta que reinicie su navegador. Por lo que yo sé que cada navegador lo hace. Y por lo que sé que hay actualmente no hay manera de decirle al navegador que olvidarse de las credenciales.

Sin embargo, verá su sesión será diferente una vez que se ha cerrado la sesión. La solución habitual es añadir una variable de algún tipo a la sesión. Decir "loggedin". Si esta variable no se encuentra usted que el usuario tiene que entrar primero y se le redirige a decir login.jsp. Y una vez que el usuario pasado este JSP se establece de nuevo esta variable.

El uso de filtros que puede cumplir esta en todo el sistema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top