Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao acessar lista produtos sem estar logado

Se tento acessar a página http://localhost:8080/casadocodigo/produtos sem estar logado sou direcionado para uma página de erro ao invés de ser redirecionado para a página de login.

Type Exception Report

Message javax.el.PropertyNotFoundException: Property [username] not found on type [java.lang.String]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: Property [username] not found on type [java.lang.String]
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:606)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:482)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
1 resposta
solução!

Fala Fábio, tudo bem ?

Então, a URI /casadocodigo/produtos (tentando acessar a página ou seja através de um GET request) deveria ser pública. E na verdade imagino que continua sendo. Na classe SpringSecurityConfiguration você provavelmente deu permit all pra essa requisição.

O que está ocorrendo ai, pela minha suspeita, é que você está tentando exibir dados de um usuário logado na página Property [username] que é publica (que pode estar sendo acessada por acessos autenticados(usuarios logados) ou anonimos(usuarios que nao fizeram login)).

Dessa forma quando um usuário logado for pra ela funcionaria, mas quando um deslogado o fizer vai dar pau. Perceba que a página de erro mostra um problema de processamento da JSP JasperException: javax.el.PropertyNotFoundException, provavelmente tudo correu bem até tentar montar a página, quando a ausencia de informação sobre o usuário foi percebida.

Se você estiver usando as tags do spring security pra mostrar os dados do usuário tente verificar se o usuário esta logado primeiro, antes de tentar acessar as informações dele.

Exemplo:

<security:authorize access="isAuthenticated()">

    <security:authentication property="principal" var="user" />
    <span>Bem vindo, ${user.name}</span> 
</security>

Espero ter ajudado. Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software