Spring security + jsf

1 resposta
E

tenho um projeto aqui que utiliza jsf + spring + hibernate. Pra questão de permissão/autenticação de usuários, queremos colocar o spring security. Queremos que ao logar no sistema já seja verificado as permissões de acesso e com isso evitar mostrar menus por exemplo.

Pois bem, estou vendo a documentação dele mas estou meio perdido. Também vi os seguintes links:
http://www.mularien.com/blog/2008/07/07/5-minute-guide-to-spring-security/
http://ocpsoft.com/java/acegi-spring-security-jsf-login-page/

Adaptei as configuracoes a minha aplicação. Coloquei os filtros no web.xml, criei o spring-security.xml e nele fiz:

<http
		auto-config="true"
		access-denied-page="/accessDenied.jsp">
 
		<intercept-url
			pattern="/**"
			access="ROLE_SYSTEM_ADMIN,ROLE_USER,ROLE_ADMIN" />
		
		<intercept-url pattern="/publico/login.jspx" filters="none"/>  

	</http>
 
	<authentication-provider>
		<jdbc-user-service data-source-ref="dataSource" 
		                   authorities-by-username-query="select lg, autoridade from t_usuario where lg=?" 
		                   users-by-username-query="select lg from t_usuario where lg=?" />
		                   
	</authentication-provider>

pra customizar o acesso e utilizar minha propria tabela de usuarios usei a tag <jdbc-user-service>. Porém, ao submeter a página de login, recebo:

java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
    org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:241)
    org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
    org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
    org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
    org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:169)
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

minha página de login:

&lt;f:view&gt;

		&lt;h:form id="loginForm" prependId="false"&gt;
			&lt;label for="j_username"&gt;&lt;h:outputText value="Username:" /&gt;<br />
			&lt;/label&gt;
			&lt;h:inputText
				id="j_username"
				required="true"&gt;
			&lt;/h:inputText&gt;

			<br />
			<br />
			&lt;label for="j_password"&gt;&lt;h:outputText value="Password:" /&gt;<br />
			&lt;/label&gt;
			&lt;h:inputSecret
				id="j_password"
				required="true"&gt;
			&lt;/h:inputSecret&gt;

			<br />
			<br />

			&lt;h:commandButton
				type="submit"
				id="login"
				action="#{loginBean.verificaLogin}"
				value="Login" /&gt;

		&lt;/h:form&gt;
	&lt;/f:view&gt;

sugestões?

1 Resposta

J

Estou no meio de um projeto que acabei de colocar o Acegi, me baseei no projeto de exemplo, baixa ele http://downloads.sourceforge.net/acegisecurity/acegisecurity-1.0.7.zip?modtime=[telefone removido]&big_mirror=0 e da uma olhada no acegi-security-samples-tutorial-1.0.7 é muito básico e simples.

Criado 19 de janeiro de 2009
Ultima resposta 20 de jan. de 2009
Respostas 1
Participantes 2