Olá, obrigado por ajudar
Projeto Spring MVC 3.2.2
Spring Security 3.1.4
Tiles 2.2.2
Eu criei um projeto no Openshift e estava funcionando a parte MVC numa boa. Ao adicionar o Spring-Security, não estou conseguindo acesso à página de login, eu não tenho certeza do que pode ser. Bom, vou tentar explicar o que fiz até o momento. A estrutura do projeto é essa e tem uma página login.jsp dentro do diretório login.
O web.xml[code]
spring
org.springframework.web.servlet.DispatcherServlet
2
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>br.com.meuprojeto.config</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring Security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- fim security -->[/code]O tiles-context[code] <bean id="tilesviewResolver"
class="org.springframework.web.servlet.view.tiles2.TilesViewResolver"
p:order="0" />
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/jsp/**/tiles.xml/</value>
</list>
</property>
</bean>[/code] O applicationContext[code]<context:annotation-config />
<mvc:annotation-driven />
<context:component-scan base-package="br.com.meuprojeto" />
<import resource="tiles-context.xml" />
<mvc:resources mapping="imagens/**" location="/resources/images/*" />
<mvc:resources mapping="css/**" location="/resources/css/*" />
<mvc:resources mapping="javascript/**" location="/resources/javascript/*" />
<mvc:default-servlet-handler />[/code] O spring-servlet [code] <bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp"
p:order="1" />[/code] E finalmente, o webSecurityConfig (é chamado por uma classe anotada) [code] <http use-expressions="true">
<intercept-url pattern="/anonymous*" access="isAnonymous()" />
<intercept-url pattern="/login*" access="permitAll" />
<intercept-url pattern="/**" access="isAuthenticated()" />
<form-login
login-page="/login/login.jsp"
login-processing-url="/perform_login"
default-target-url="/login/homepage.jsp"
authentication-failure-url="/login.html?error=true"
always-use-default-target="true"/>
<logout
logout-url="/perform_logout"
delete-cookies="JSESSIONID"
success-handler-ref="customLogoutSuccessHandler" />
</http>
<beans:bean name="customLogoutSuccessHandler" class="br.com.meuprojeto.security.CustomLogoutSuccessHandler" />
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user1" password="user1Pass" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>[/code][b]Tentativa 1:[/b] como está descrito no meu spring-servlet, vou acessar minhas páginas a partir do /jsp -> então tentei site:8080/login/login.jsp direto e deu dois erros - um com o [url=http://www.flickr.com/photos/42649796@N05/9027129055/]firefox[/url] e outro com o [url=http://www.flickr.com/photos/42649796@N05/9029356558/]chrome[/url]; Acredito que entrou em um loop, mas não entendi porque. O /login não está permitido?!
Tentativa 2: Tentar com rest na unha. Criei outro controller[code]@Controller
@RequestMapping("/")
public class MeuProjetoController {
@RequestMapping(value = "/teste", method = RequestMethod.GET)
public String testeLogin(ModelMap map, Model model) {
logger.info("estou indo para a pagina de login");
return "login-page";
}[/code] No definition do "login-page" do tiles ele retorna [code]<definition name="login-page" extends="template-main">
<put-attribute name="primary-content" value="/WEB-INF/jsp/login/login.jsp" />
</definition>[/code] E no arquivo webSecurityConfig eu adicionei[code]<intercept-url pattern="/teste*" access="permitAll" />[/code] e alterei [code] <form-login
login-page="/teste"[/code] Então eu acessei minhaAplicacao:8080/teste e tomei um [url=http://www.flickr.com/photos/42649796@N05/9029654722/]lindo 404 -> PAGE NOT FOUND[/url]. No log do servidor ele me responde
2013/06/12 18:38:27,189 WARN [org.springframework.web.servlet.PageNotFound] (http-ip-8080-1) No mapping found for HTTP request with URI [/teste] in DispatcherServlet with name ‘spring’
Mas eu não tinha liberado o /teste para qualquer um? Cadê o meu acesso ao meu Controller?!
As configurações dos meus ViewResolvers (Internal e Tiles View Resolver) podem atrapalhar as configurações do Spring-Security?
Espero ter sido o mais claro possível e obrigado por ajudar (pelo menos de ter lido até aqui)