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:
<f:view>
<h:form id="loginForm" prependId="false">
<label for="j_username"><h:outputText value="Username:" /><br />
</label>
<h:inputText
id="j_username"
required="true">
</h:inputText>
<br />
<br />
<label for="j_password"><h:outputText value="Password:" /><br />
</label>
<h:inputSecret
id="j_password"
required="true">
</h:inputSecret>
<br />
<br />
<h:commandButton
type="submit"
id="login"
action="#{loginBean.verificaLogin}"
value="Login" />
</h:form>
</f:view>
sugestões?