Aplicação JSF não pede autenticação no segundo acesso

1 resposta
prog.tiago

Boa madruga amigos,

Estou desenvolvendo uma aplicação com JSF, utilizei o Spring Security para autenticação. No entanto ocorre que quando fecho a página e abro de novo, o sistema não pede autenticação. Já entra direto.

Abaixo está o meu arquivo applicationContext-security.xml.

<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
	xmlns:b="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
	<http auto-config="true" access-denied-page="/publico/acessoNegado.xhtml">

		<intercept-url pattern="/gestor/**" access="ROLE_GESTOR,ROLE_ADMINISTRADOR" />
		<intercept-url pattern="/secretaria/**"
			access="ROLE_SECRETARIA,ROLE_ADMINISTRADOR,ROLE_GESTOR" />
		<form-login login-page="/publico/autenticacao.jsf"
			always-use-default-target="true" default-target-url="/secretaria/inserirCotas.jsf"
			authentication-failure-url="/publico/autenticacao.jsf?login_error=1" />
		<logout />
	
	</http>

	<authentication-manager>
		<authentication-provider>
			<jdbc-user-service data-source-ref="reprografiaDataSource"
				authorities-by-username-query="SELECT u.usuario,u.privilegio
											 FROM usuario u
											WHERE u.usuario= ?"
				users-by-username-query="SELECT usuario,senha,ativo
									   FROM usuario
									  WHERE usuario = ?" />
		</authentication-provider>
	</authentication-manager>
</b:beans>

Abraços

1 Resposta

lindberg713

Quando você fala fecho a página você ta se referindo a fechar apenas a ABA do browser e abrir o sistema em outra aba e aparece já logado ou fechar de fato o browser e abrir novamente e quando acessa o sistema já aparece logado?

Se for quando fecha a aba é o comportamento normal. Isso ocorre com qualquer site, gmail, facebook, banco do brasil, enfim. A aplicação trabalha com autenticação baseado na session do usuário usando cookies. O fechamento de uma aba não encerra uma sessão nem remove um cookie, por exemplo JSESSIONID. Até por que não tem como fazer, pelo menos de um modo normal sem gambiarras e que funcione em todos os browsers, a detecção do fechamento de uma aba e dessa forma invalidar a sessão. Creio que no IE tem como fazer isso mas só no IE via gambiarras.

Se o que está perguntando é de fato o fechamento do browser em si ai sim o comportamento não está correto e você deve verificar a configuração de cookies do seu applicationContext.xml do spring no que se refere a segurança e até do seu browser em si.

De qualquer forma é bom colocar dentro da sua tag security:http do seu applicationContext.xml a configuração para remover o JSESSIONID no momento do logout, como abaixo:

Criado 15 de março de 2012
Ultima resposta 15 de mar. de 2012
Respostas 1
Participantes 2