public class ControlServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
NtlmPasswordAuthentication auth = (NtlmPasswordAuthentication) request.getSession()
.getAttribute("NtlmHttpAuth");
UsuarioSessao us = new UsuarioSessao();
Usuario u = new Usuario();
u.setLogin(auth.getUsername());
us.setUsuario(u);
response.sendRedirect("/projeto/");
}
}
InicioController:
@Resource
public class InicioController implements Serializable {
private static final long serialVersionUID = 1L;
private final Result resultado;
private UsuarioSessao usuarioSessao;
public InicioController(Result resultado, UsuarioSessao usuarioSessao) {
this.resultado = resultado;
this.usuarioSessao = usuarioSessao;
}
@Publico
@Get("/")
public void index() {
System.out.println(this.usuarioSessao.getUsuario().getLogin());
}
}
Tentei pegar a sessao do usuário pelo Controller, mas ela veio vazia.
Como colocar o usuário na sessão e conseguir resgatá-la no InicioController?
Fiz um debug aki e desconfiei que o controller executa antes do jsp, por isso ele não consegue pegar esse valor.
Por esse motivo optei de pegar por Servlet.
Como posso resolver isso?
Então, para eu pegar a sessão pelo controller, eu tenho que passar o HttpSevletRequest pelo construtor da classe, certo?
@Resource
public class InicioController implements Serializable {
private static final long serialVersionUID = 1L;
private final Result resultado;
private UsuarioSessao usuarioSessao;
private Usuario usuario;
private HttpServletRequest request;
public InicioController(Result resultado, UsuarioSessao usuarioSessao,
Usuario usuario, HttpServletRequest request) {
this.resultado = resultado;
this.usuarioSessao = usuarioSessao;
this.usuario = usuario;
this.request = request;
NtlmPasswordAuthentication auth = (NtlmPasswordAuthentication) request.getSession()
.getAttribute("NtlmHttpAuth");
usuario.setLogin(auth.getUsername());
usuarioSessao.setUsuario(usuario);
}
@Publico
@Get("/")
public void index() {
}
}
Ai da erro na hora de dar um getUsername() no objeto auth, porque está nulo.
O engraçado é que no Servlet não da erro nenhum. Eu acho q o problema é esse HttpServletRequest que o controller n ta pegando. Por isso ele não ta pegando a sessão direitinho.