eu acho que compliquei a tua vida :P , deixa eu te dar outra dica:
você pode sobrescrever o RequestProcessor do Struts, que é a classe que trata todas as requisições:
package struts.security;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class RequestProcessor extends org.apache.struts.action.RequestProcessor
{
protected boolean processPreprocess(HttpServletRequest request, HttpServletResponse response)
{
HttpSession session = request.getSession(true);
String usuario = (String) session.getAttribute("user");
if (usuario != null && usuario.equals("ricardo"))
{
return true;
}
// response.sendError(
// HttpServletResponse.SC_BAD_REQUEST,
// getInternal().getMessage("notAuthorized", mapping.getPath()));
try
{
response.sendRedirect("notAuthorized.jsp");
}
catch (IOException e)
{
e.printStackTrace();
}
return false;
}
}
ai no struts-config.xml você precisa informar que agora o RequestProcessor será feito pela sua classe:
<controller nocache="true" processorClass="struts.security.RequestProcessor" />
no exemplo eu mandei redirecionar para uma página padrao caso o usuario nao esteja logado.
pronto, tudo configurado.
Agora todas as requisições vão passar por esta classe e você retorna true/false caso o usuario deva ou nao acessar a página.
No exemplo que fiz eu recuperei a HttpSession e testei para ver se existia um usuario ricardo, se for este usuario retorna true, caso contrário redireciona e retorna false.
blz ? :D